美文网首页
外观模式

外观模式

作者: 钟离惜 | 来源:发表于2020-10-26 17:14 被阅读0次

    外观模式属于接口隔离模式。

    Facade模式作用和目的:

    为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(Facade)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。将各个子系统整合起来作为Facade,提供给客户端使用。

    Facade模式使用场景:

    1、当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。
    2、客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。
    3、当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点,如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。

    #include <iostream>
    using namespace std; 
    
    class Subsystem1
    {
    public:
        Subsystem1() {};
        ~Subsystem1() {};
        void Operation() { cout << "Subsystem1::Operation" << endl; };
    };
    class Subsystem2
    {
    public:
        Subsystem2() {};
        ~Subsystem2() {};
        void Operation() { cout << "Subsystem2::Operation" << endl; };
    };
    class Facade
    {
    public:
        Facade() {};
        ~Facade() {};
        void OperationWrapper() { _subsys1.Operation();  _subsys2.Operation(); };
    private:
        Subsystem1 _subsys1;
        Subsystem2 _subsys2;
    };
    int main()
    {
        Facade pFacade;
        pFacade.OperationWrapper();
        return 0;
    }
    

    转载文章
    C++外观模式详解--设计模式(11)

    相关文章

      网友评论

          本文标题:外观模式

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