概述
- 门面模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,Facade类将客户类与子系统的内部复杂性分隔开,使得客户类只需要与门面角色打交道,而不需要与子系统内部的很多对象打交道。
- 门面模式是迪米特法则的一种具体实现,通过引入一个新的门面角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。
- 定义:为子系统中的一组接口提供一个统一的入口。门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
- 门面模式又称为外观模式。
- 是一种对象结构型模式。
- 学习难度:★☆☆☆☆
- 使用频率:★★★★★
优缺点
类图
组成角色
- 外观角色(Facade)
- 子系统角色(SubSystem)
Code Example
外观角色(Facade)
public class Facade {
public void method() {
SubSystemA a = new SubSystemA();
SubSystemB b = new SubSystemB();
a.method();
b.method();
}
}
子系统角色(SubSystem)
public class SubSystemA {
public void method() {
System.out.println("子系统方法A!");
}
}
public class SubSystemB {
public void method() {
System.out.println("子系统方法B!");
}
}
客户端
public class FacadePattern {
public static void main(String[] args) {
Client client = new Client();
client.method();
}
}