美文网首页
结构型模式5-外观模式

结构型模式5-外观模式

作者: sunblog | 来源:发表于2018-04-16 23:06 被阅读0次

结构型模式5-外观模式

外观模式Facade

意图

为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

问题思考

假如某个功能需要多个对象协同一起工作,而这些对象所属的类又比较复杂,该功能只使用到了其中部分接口。倘若其他开发者要使用这个功能,他可以查各个对象的文档最终得到最终的功能。但这样既费时间,又容易出错。

适用性

  • 当要为一个复杂子系统提供一个简单接口时
  • 客户程序与抽象类的实现部分之间存在很大的依赖性。facade模式可以分离把这个子系统和客户(或者其他子系统)分离
  • 当需要构建一个层次结构的子系统。使用facade模式定义子系统中每层的入口点

类图

facade

实现

class Facade {
public:
    Facade(ConcreteClassA *a, ConcreteClassB *b, ConcreteClassC* c) {
        mObjA = a;
        mObjB = b;
        mObjC = c;
    }

    void Operation1() {
        mObjA->Operation1();
    }

    void Operation2() {
        mObjB->Operation2();
    }

    void Operation3() {
        mObjC->Operation3();
    }

private:
    ConcreteClassA *mObjA = nullptr;
    ConcreteClassB *mObjB = nullptr;
    ConcreteClassC *mObjC = nullptr;
};

class ConcreteClassA {
public:
    void Operation1();
};

class ConcreteClassB {
public:
    void Operation2();
};

class ConcreteClassC {
public:
    void Operation3();
};

相关文章

网友评论

      本文标题:结构型模式5-外观模式

      本文链接:https://www.haomeiwen.com/subject/gouykftx.html