Java 設計模式系列(13) —— 外觀模式(門面模式)
阿新 • • 發佈:2021-01-13
技術標籤:Java 設計模式系列
外觀模式(門面模式)
外觀模式的定義:
要求一個子系統的外部預期內部的通訊必須通過一個統一的物件進行,外觀模式提供了一個高層次的介面,使得子系統更容易使用
外觀模式的參與者:
- Client 客戶端:
- Facade 子系統介面:客戶端可以呼叫該角色的方法,該角色知曉相關模組的子功能和責任。該門面是客戶端呼叫子系統的橋樑。
- Subsystem 子系統中定義的類:子系統是具體業務的實現,但是子系統並不需要被呼叫的是誰
外觀模式的簡單示例
Subsystem
- SubClassA
public class SubClassA {
public void executeProcedureA () {
System.out.println("Subclass A is executing Procedure A");
}
}
- SubClassB
public class SubClassB {
public void executeProcedureB() {
System.out.println("Subclass B is executing Procedure B");
}
}
Facade 物件
public class Facade {
private SubClassA sa = new SubClassA ();
private SubClassB sb = new SubClassB();
public void doingA() {
sa.executeProcedureA();
}
public void doingB() {
sb.executeProcedureB();
}
}
Client
public class Client {
public static void main(String[] args) {
Facade f = new Facade();
f.doingA();
f.doingB();
}
}
外觀模式的優缺點和使用場景
外觀模式的優點:
- 減少系統的相互依賴
- 提高了靈活性
- 提高安全性
外觀模式的缺點:
- 不符合開閉原則
外觀模式的應用場景
- 為一個複雜的模組或子系統提供一個供外界訪問的介面
- 子系統相對獨立
- 預防低水平人員帶來的風險擴散