Supponiamo di avere una classe A:
public class A{
public void a(){
}
}
e la classe B usa A:
public class B{
private A a;
}
Devo incapsulare A in B:
public class B{
private A a;
public void a(){
a.a();
}
}
poi
new B().a();
o semplicemente consenti agli utenti di B di accedere direttamente a:
public class B{
private A a;
public A getA(){
return A;
}
}
poi
new B().getA().a();
Credo che molte persone preferiscano la nuova B (). a (); perché consente agli utenti di B non ha bisogno di sapere di A. Ma ho scoperto che ha almeno uno svantaggio: se aggiungo nuovi metodi in A, devo modificare sia A che B, mentre se permetto agli utenti di accedere A direttamente, quindi non ho bisogno di modificare B e solo:
new B().getA().a();
new B().getA().newMethod();
Dovrebbe incapsulare A in B come metodi? O permettere semplicemente agli utenti di B di accedere A direttamente?