Je suis en train de refactoriser certaines parties de mon code, l'une d'entre elles a une fonction de rappel. Je ne suis pas vraiment sûr de la pertinence du rappel, car il introduit un couplage étroit.Rappel et couplage serré
Permettez-moi de vous donner un exemple:
public class SimpleExample {
OtherClass oc;
Callback callback;
...
public void register(Callback c) {
this.callback = c;
}
public void doStuff() {
callback.push(oc);
}
...
}
L'interface:
public interface Callback {
public void push(OtherClass oc);
}
La mise en œuvre de l'interface:
public CallbackImpl implements Callback {
HashMap<OtherClass, String> map;
...
public void push(OtherClass oc) {
String s = map.get(oc);
System.out.println(s);
}
...
}
Le principal problème que je vois est que mon interface utilisez OtherClass en tant que paramètre de fonction. Il est important de mentionner que OtherClass n'est pas une interface. Donc, ma première signification était de refactoriser cette classe avec une interface. Est-ce un bon choix ?
Cela dépend de la visibilité de 'OtherClass'. S'il s'agissait d'un objet très public (par exemple 'String'), il est inutile de le remplacer. Si vous pensez qu'il peut y avoir plusieurs implémentations de 'OtherClass' que le remplacement est un bon choix, sinon tout consommateur de' Callback' nécessite une instance de 'OtherClass'. – hotzst