Je travaille sur un code d'interface utilisateur où j'ai une Action
classe, quelque chose comme ça -
public class MyAction extends Action {
public MyAction() {
setText("My Action Text");
setToolTip("My Action Tool tip");
setImage("Some Image");
}
}
Lorsque cette classe Action a été créée, il était à peu près supposé que la Action
classe ne serait pas personnalisable (dans un sens - son texte, son info-bulle ou son image ne seront modifiés nulle part dans le code). Maintenant, nous avons besoin de changer le texte de l'action à un certain endroit dans le code. J'ai donc suggéré à mon collègue de supprimer le texte d'action codé en dur du constructeur et de l'accepter comme argument, afin que tout le monde soit obligé de passer le texte d'action. Quelque chose comme ce code ci-dessous -
public class MyAction extends Action {
public MyAction(String actionText) {
setText(actionText);
setTooltip("My Action tool tip");
setImage("My Image");
}
}
Cependant, il pense que puisque la setText()
méthode appartient à la classe de base, elle peut être utilisée de manière flexible pour passer le texte d'action partout où l'instance d'action est créée. De cette façon, il n'est pas nécessaire de modifier la MyAction
classe existante . Donc, son code ressemblerait à quelque chose comme ça.
MyAction action = new MyAction(); //this creates action instance with the hardcoded text
action.setText("User required new action text"); //overwrite the existing text.
Je ne sais pas si c'est une bonne façon de régler le problème. Je pense que dans le cas mentionné ci-dessus, l'utilisateur va de toute façon changer le texte, alors pourquoi ne pas le forcer lors de la construction de l'action? Le seul avantage que je vois avec le code d'origine est que l'utilisateur peut créer une classe Action sans trop penser à définir du texte.