Si consideri la seguente classechiamata metodo di classe Super automaticamente
class A{
public void init(){
//do this first;
}
public void atEnd(){
//do this after init of base class ends
}
}
class B1 extends A{
@Override
public void init()
{
super.init();
//do new stuff.
//I do not want to call atEnd() method here...
}
}
Ho diversi B1, B2, ... Bn classi figlie che sono già sviluppate. Tutti loro estendono la classe A. Se voglio aggiungere una nuova funzionalità in tutti loro, il posto migliore per farlo è definirlo in un metodo all'interno della classe A. Ma la condizione è che il metodo debba sempre essere chiamato automaticamente prima il metodo init() della classe child termina. Un modo semplice per farlo è di aggiungere nuovamente la chiamata al metodo atEnd() al termine del metodo init() delle classi child. Ma c'è un altro modo per farlo in modo intelligente ??
Se si tratta di proteggere gli invarianti di classe, AOP sarebbe una soluzione molto scarsa. –
Si tratta di "fare cose"; invarianti non sono menzionati. E non sono sicuro che "molto povero" sia appropriato, in base alle informazioni fornite. – duffymo