Hello
J'ai passé du temps à travailler sur cette question :
1 2 3 4 5 6 7 8 9
| class Pg{
String exec(String command,String text) {
if(!"countWords".equals(command) ) {
return null;
}
//WordCounter is a class with a static method counter that return number of words in a String
return WordCounter.count(text);
}
} |
La question est de concevoir une solution permettant d'utiliser la commande "CountWords" mais pouvant potentiellement accepter d'autres commandes.
Nous devons conserver la méthode String exec(String command,String text) .
Nous pouvons ajouter des classes/interfaces
J'ai pensé à 3 solutions
1) Concevoir une classe abstraite AbstractProgram qui a la méthode String exec(String command,String text) puis créer des classes qui l'implémentent mais cela n'aidera pas car nous utiliserons plusieurs commandes en plus de la commande "countWords".
2) Implémenter un le design pattern décorateur, mais cela n'aidera pas car nous n'avons pas toutes les commandes possibles qui pourraient être utilisées. Si tel est le cas, nous pourrions créer une implémentation de décorateur pour chaque commande.
3) Laissant la classe telle quelle, mais lors du passage de la commande, nous passons une chaîne avec des commandes séparées par un espace. Par example :
new Pg().exec("countWords countPoints", "Hello Word. This is a greeting.").
Ensuite, initialisez un StringBuilder et ajoutez les résultats.
Je pense que la 3ème solution est la plus adaptée.
Qu'en pensez-vous?
Thanks
Partager