一、引
這次要講的這個模式其實在我們日常編寫代碼的過程中非常常見,在面向對象編程中,我們幾乎無時無刻不在用它,它就是外觀模式。在進入講解之前,我們先來了解一個設計原則,這就是迪米特法則。
迪米特法則,如果兩個類不必彼此直接通信,那麼這兩個類就不應當發生直接的相互作用,如果其中的一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。迪米特法則其實和前面提到的依賴倒置原則有些類似,都是強調類之間的鬆耦合,面向接口設計。
二、理解
外觀模式,爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這個子系統更加容易使用。在我們設計代碼之初,就應該有意識的將不同的兩個層分開,在代碼開發階段,增加“外觀”可以提供一個簡單的接口,減少他們之間的依賴,在維護過程中,爲新系統提供一個“外觀”,來提供設計粗糙或高度複雜的遺留代碼的比較清晰的簡單接口,讓新系統和外觀類對象交互,外觀類與遺留代碼交互所有複雜的工作。一下是外觀模式的結構圖
三、實現
public class SubSystemOne {
public void MethodOne() {
}
}
public class SubSystemTwo {
public void MethodTwo() {
}
}
public class SubSystemThree {
public void MethodThree() {
}
}
public class SubSystemFour {
public void MethodFour() {
}
}
public class Facade {
SubSystemOne subSystemOne;
SubSystemTwo subSystemTwo;
SubSystemThree subSystemThree;
SubSystemFour subSystemFour;
public Facade() {
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
subSystemFour = new SubSystemFour();
}
public void Method() {
subSystemOne.MethodOne();
subSystemTwo.MethodTwo();
subSystemThree.MethodThree();
subSystemFour.MethodFour();
}
}
public class Main {
public static void main(String[] args) {
Facade facade = new Facade();
facade.Method();
}
}