门面模式
定义
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个更高层次的接口,使得子系统更易于使用。门面模式也叫做外观模式。
门面模式通用类图:
- Facade:门面角色,暴露给客户端的方法,此角色知晓所有子系统的所有功能和责任,将客户端的请求下发到对应的子系统去,没有实际的业务逻辑,只是一个为委托类。
- subsystem:子系统角色,可同时有一个或多个子系统,每个子系统都不是一个单独的类,而是一个类的集合,子系统并不知道门面的存在。
具体实现
1 | public class ClassA { |
门面对象:
1 | public class Facade { |
1 | public static void main(String[] args) { |
优点
- 减少系统的互相依赖
- 提高灵活性
- 提高安全性
缺点
- 不能很好地限制客户使用子系统类。
- 增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”。
使用场景
- 为一个复杂的模块或子系统提供一个供外界访问的接口;
代码GitHub
欢迎关注公众号: