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

定义(也叫外观模式,是一种常见的封装模式):
  • 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供了一个高层次的结构,使得子系统更易于使用。
<<设计模式之禅(第二版)>>——第二十三章 门面模式_第1张图片
门面模式的通用类图

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();
  }
}
注意事项:
  • 门面不参与子系统的业务逻辑

你可能感兴趣的:(<<设计模式之禅(第二版)>>——第二十三章 门面模式)