Considerare la seguente analogia: Se abbiamo una classe: "Car" ci si potrebbe aspettare che abbia un'istanza di "Engine" in essa. Come in: "La macchina HAS-A motore". Allo stesso modo, nella classe "Engine" ci aspetteremmo un'istanza di "Starting System" o "Cooling System" che hanno le loro sub-componenti appropriate.Qual è la regola generale sull'esporre metodi di classe incapsulati
Per la natura dell'incapsulamento, non è vero che l'auto "HAS-A" "tubo del radiatore" in esso così come il motore?
Pertanto, è opportuno OO a fare qualcosa di simile:
public class Car {
private Engine _engine;
public Engine getEngine() {
return _engine;
}
// is it ok to use 'convenience' methods of inner classes?
// are the following 2 methods "wrong" from an OO point of view?
public RadiatorHose getRadiatorHose() {
return getCoolingSystem().getRadiatorHose();
}
public CoolingSystem getCoolingSystem() {
return _engine.getCoolingSystem();
}
}
public class Engine {
private CoolingSystem _coolingSystem;
public CoolingSystem getCoolingSystem() {
return _coolingSystem;
}
}
public class CoolingSystem {
private RadiatorHose _radiatorHose;
public RadiatorHose getRadiatorHose() {
return _radiatorHose;
}
}
public class RadiatorHose {//...
}
Ho appena finito il PDF e era quasi attraverso con l'articolo già - ma questo potrebbe essere utile a qualcun altro. +1 – javamonkey79