class A{
private List<T> list;
public int getListSize(){
return list.size();
}
}
class B{
private A objectA;
public int getSizeOfListInA{
return objectA.getListSize();
}
}
class C{
B objectB;
// here I need to know the size of the list
}
Sto semplificando troppo qui, ma mi stavo chiedendo se questo è il modo giusto per scrivere codice corretto - supponiamo che la classe C abbia bisogno di conoscere la dimensione della lista. Se ci fosse un altro oggetto di classe D contenente classe C, e D volesse conoscere la dimensione della lista da A, avrei bisogno di un altro metodo getSizeOfTheList
nella classe C. Quindi è un sacco di duplicazione del codice - tre metodi che generalmente fanno la stessa cosa, semplicemente perché una classe che è di livello vuole sapere le sue cose interne. Naturalmente sarebbe meglio se C non dovesse conoscere la dimensione dell'elenco, ma a volte ha senso.
Modifica
Se A era una classe immutabile, allora forse sarebbe meglio avere getObjectA invece in classe B? Supponiamo che io voglia rendere disponibili tutti i metodi objectA ai client della classe B - includendo il metodo getObjectA Non ho bisogno di riscriverli in B. Il client chiamerebbe semplicemente getObjectA e poi chiamerebbe il suo metodo.
La domanda è ovviamente se voglio davvero che i clienti accedano a tutti i metodi di A. E sarebbe più difficile per i clienti di B usare la mia API. Quindi io oi miei clienti avremo una vita più facile.