其他設計模式
java單例模式
java建造者模式
java策略模式
java代理模式
java觀察者模式
java適配器模式
java外觀模式
外觀模式(Facade),為子系統(tǒng)中的一組接口提供一個一致的界面高氮,此模式定義了一個高層接口慧妄,這個接口使得這一子系統(tǒng)更加容易使用
四個子系統(tǒng)的類
public class SubSystemOne {
public void methodOne(){
System.out.println("子系統(tǒng)方法一");
}
}
public class SubSystemTwo {
public void methodTwo(){
System.out.println("子系統(tǒng)方法二");
}
}
public class SubSystemThree {
public void methodThree(){
System.out.println("子系統(tǒng)方法三");
}
}
public class SubSystemFour {
public void methodFour(){
System.out.println("子系統(tǒng)方法四");
}
}
外觀類
public class Facade {
SubSystemOne one;
SubSystemTwo two;
SubSystemThree three;
SubSystemFour four;
public Facade() {
one = new SubSystemOne();
two = new SubSystemTwo();
three = new SubSystemThree();
four = new SubSystemFour();
}
public void methodA(){
one.methodOne();
two.methodTwo();
three.methodThree();
}
public void methodB(){
one.methodOne();
two.methodTwo();
three.methodThree();
four.methodFour();
}
}
客戶端調(diào)用
public class TestFacade {
public static void main(String[] args) {
Facade facade=new Facade();
facade.methodA();
facade.methodB();
}
}
外觀模式的目的
不是給子系統(tǒng)添加新的功能接口,而是為了讓外部減少與子系統(tǒng)內(nèi)多個模塊的交互剪芍,松散耦合塞淹,從而讓外部能夠更簡單的使用子系統(tǒng)。
優(yōu)缺點
- 優(yōu)點
- 松散耦合
- 簡單易用
- 更好的劃分訪問的層次
- 缺點
- 過多的或者是不太合理的Facade也容易讓人迷惑罪裹。到底是調(diào)用Facade好還是直接調(diào)用模塊好窖铡。
本質(zhì)
封裝交互,簡化調(diào)用
何時選用外觀模式
- 如果你希望為復雜的子系統(tǒng)提供一個簡單接口的時候坊谁,可以考慮使用外觀模式。使用外觀對象對實現(xiàn)大部分客戶需要的功能滑臊,從而簡化客戶的使用口芍。
- 如果想要讓客戶程序和抽象類的實現(xiàn)部分松散耦合,可以考慮使用外觀模式雇卷,使用外觀對象來將這個子系統(tǒng)與它的客戶分離開來鬓椭,從而提高子系統(tǒng)的獨立性和可移植性颠猴。
- 如果構建多層結構的系統(tǒng),可以考慮使用外觀模式小染,使用外觀對象作為每層的入口翘瓮,這樣就可以簡化層間調(diào)用,也可以松散層次之間的依賴關系裤翩。