一、定義
外觀模式爲子系統中的一組解耦提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
理解此模式可以參照經典的三層架構,數據訪問層、業務邏輯層、表示層的層與層之間建立外觀Facade。這樣可以爲複雜的子系統提供一個簡單的接口,使得耦合大大降低。
二、UML類圖
三、實現
- 包裝類(客戶端調用)
package com.jthao.design.des.facade;
public class Facade {
public SubSystemOne subSystemOne;
public SubSystemTwo subSystemTwo;
public SubSystemThree subSystemThree;
public Facade() {
subSystemOne = new SubSystemOne();
subSystemTwo = new SubSystemTwo();
subSystemThree = new SubSystemThree();
}
public void methodA() {
subSystemOne.methodOne();
subSystemTwo.methodTwo();
}
public void methodB() {
subSystemOne.methodOne();
subSystemThree.methodThree();
}
}
- 實現類A(不對外提供)
package com.jthao.design.des.facade;
public class SubSystemOne {
public void methodOne() {
System.out.println("SubSystemOne 方法");
}
}
- 實現類B(不對外提供)
package com.jthao.design.des.facade;
public class SubSystemTwo {
public void methodTwo() {
System.out.println("SubSystemTwo 方法");
}
}
- 實現類C(不對外提供)
package com.jthao.design.des.facade;
public class SubSystemThree {
public void methodThree() {
System.out.println("SubSystemThree 方法");
}
}
- 測試類
package com.jthao.design.des.facade;
public class FacadeTest {
public static void main(String[] args) {
Facade facade = new Facade();
facade.methodA();
facade.methodB();
}
}