<<设计模式之禅(第二版)>>——第二十

2016-10-21  本文已影响14人  leiiiooo
定义(也叫外观模式,是一种常见的封装模式):
门面模式的通用类图

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();
  }
}
注意事项:
上一篇 下一篇

猜你喜欢

热点阅读