請考慮以下類比: 如果我們有一個類:「汽車」,我們可能會認爲它有一個「引擎」的實例。如:「汽車HAS-A發動機」。同樣,在「引擎」類中,我們期望有一個「啓動系統」或「冷卻系統」的實例,它們都有相應的子組件。什麼是暴露封裝類方法的經驗法則
由於封裝的性質,汽車「HAS-A」「散熱器軟管」以及發動機是不是真的?
因此,它是適當OO做這樣的事情:
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 {//...
}
我剛剛完成PDF文件,幾乎已經完成了文章 - 但這可能對別人有幫助。 +1 – javamonkey79 2010-05-29 01:08:46