门面模式C++实现

1定义facade

要求一个子系统的外部接口与其内部的通信必须通过一个统一的接口进行。门面模式提供一个高层次的接口,使得子系统更容易视同

注:门面模式注重统一对象,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为产生

2类图

设计模式--门面模式C++实现-LMLPHP

facade门面角色,是外界访问子系统内部的唯一通道

subsystem子系统角色,可以同时是一个或者多个子系统,每个子系统不是单独的类而是一个类的集合

3实现

//子系统

class classA

{

public:

  void doSomething()

  {

    //子系统业务逻辑

  }

};

class classB

{

public:

  void doSomething()

  {

    //子系统业务逻辑

  }

};

//门面对象

class Facade

{

private:

  classA a;

  classB b;

public:

  void doSomethingA()

  {

    a.doSomething();

  }

  void doSomethingB()
  {

    b.doSomething();

  }

};

4应用

①优点

减少系统的相互依赖

提高灵活性

提高安全性

②缺点

不符合开闭原则,对修改关闭,对扩展开放。因为系统内部的修改都需要变动门面

③使用场景

为一个复杂的模块或者子系统提供一个外界访问的接口

子系统相对独立--外接对子系统的访问只要黑箱操作即可

预防低水平人员带来的风险扩散

④注意事项

门面个数可以大于一的情况:

门面庞大到不能忍受的程度

子系统可以提供不同的访问路径

注:门面不参与子系统内的逻辑业务---如果子系统内部逻辑需要改动后交给外接,那么久将之封装,然后交给门面而非让门面处理逻辑

05-11 13:59