Capisco se 2 classi hanno una dipendenza circolare, ad esempio:
public class MyWindow{
public MyWindow(){
new MyDialog(this);
}
public onDialogResponse(int option){
}
}
public class MyDialog{
MyWindow myWindow;
public MyDialog(MyWindow myWindow){
this.myWindow=myWindow;
}
public void onClicked(int option){
this.myWindow.onDialogResponse(option);
}
}
possiamo interrompere la dipendenza circolare creando un'interfaccia, ad esempio:
public interface IWindow{
void onDialogResponse(int option);
}
public class MyWindow implements IWindow{
public MyWindow(){
new MyDialog(this);
}
public onDialogResponse(int option){
}
}
public class MyDialog{
IWindow myWindow;
public MyDialog(IWindow myWindow){
this.myWindow=myWindow;
}
public void onClicked(int option){
this.myWindow.onDialogResponse(option);
}
}
ma la mia domanda è, se IWindow è usato una volta solo per rompere la dipendenza circolare, vale la pena farlo? perché penso che anche se la dipendenza circolare sembra scadente, l'interruzione della dipendenza circolare in questo caso genera un codice più complesso quando viene creata un'interfaccia aggiuntiva. C'è qualche motivazione pratica o utilizzo per creare un'interfaccia solo per rompere la dipendenza circolare come in questo caso?