外觀模式
定義
外觀模式提供了一個統一的接口,用來訪問子系統的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用。
這樣我們可以避免和子系統之間的緊耦合。
最少知識原則
只和你的密友談話。
當你正在設計一個系統,不管是任何對象,你都要注意它所交互的類有哪些,並注意它和這些類是如何交互的。
這個原則我們可以提供了一些方針,就任何對象而言,在該對象的方法內,我們只應該調用屬於以下範圍的方法:
- 該對象本身
- 被當做方法的參數或者傳遞進來的對象
- 此方法所創建或實例化的任何對象
以上3項告訴我們,如果某對象是調用其他的方法的返回結果,不要調用該對象的方法。
- 對象的任何組件
把“組件”想象成是被實例變量所引用的任何對象,換句話說,把這想象成是“有一個”(HAS-A)關係。
示例代碼
public class Car {
// 這是類的一個組件,我們能調用它的方法
Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
// 方法參數傳入Key對象,key對象方法可以調用
public void start(Key key) {
// 這裏創建了一個新的對象,它的方法可以調用
Doors doors = new Doors();
boolean anthorized = key.turns(); //[2]方法參數傳入對象
if (anthorized) {
engine.start(); //[4]對象組件
updateDisplay(); //[1]該對象本身
doors.lock(); //[3]方法內實例的對象
}
}
//更新顯示
public void updateDisplay() {
// TODO Auto-generated method stub
}