<<设计模式之禅(第二版)>>——第二十三章 门面模式

定义(也叫外观模式,是一种常见的封装模式):
  • 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供了一个高层次的结构,使得子系统更易于使用。
门面模式的通用类图

Subsystem Classes 是子系统所有类的简称,可以代表一个类,也可能代表几十个对象的集合。门面对象是外界访问子系统内部的唯一通道。

public class ClassA {
  void doSomething() {
  }
}
public class ClassB {
  void doSomething() {
  }
}
public class ClassC {
  void doSomething() {
  }
}

public class Faced {
  private ClassA classA;
  private ClassB classB;
  private ClassC classC;

  void methodA() {
    classA.doSomething();
  }

  void methodB() {
    classB.doSomething();
  }

  void methodC() {
    classC.doSomething();
  }

  void method() {
    /*
     * 强烈建议不要这样使用,门面模式只是提供一个访问路径.
     * 这样会产生一个严重的倒依赖问题,子系统必须依赖门面才能被访问,
     * 这是设计上的一个错误,不仅违反了单一原则,同时破坏了系统的封装性,
     * 对于这种情况可以先创建一个封装类,实现相关的封装,然后在传递给门面类
     */
    classB.doSomething();
    classC.doSomething();
  }
}
注意事项:
  • 门面不参与子系统的业务逻辑
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容