外观模式
2020 年 09 月 03 日 749 166 字 暂无评论

01.概念

  • Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。

02.角色和职责

  • Facade

    • 为调用方, 定义简单的调用接口。
  • Clients

    • 调用者。通过Facade接口调用提供某功能的内部类群。
  • Packages

    • 功能提供者。指提供功能的类群(模块或子系统)
  • 适用于:

    • 为子系统中统一一套接口,让子系统更加容易使用。

03.代码案例

#include <iostream>

using namespace std;

class SubSystemA
{
public:
        void doThing()
        {
                cout << "SubSystemA run" << endl;
        }
private:
};

class SubSystemB
{
public:
        void doThing()
        {
                cout << "SubSystemB run" << endl;
        }
private:
};

class SubSystemC
{
public:
        void doThing()
        {
                cout << "SubSystemC run" << endl;
        }
private:
};

class Facade
{
public:
        Facade()
        {
                a = new SubSystemA;
                b = new SubSystemB;
                c = new SubSystemC;
        }
        ~Facade()
        {
                delete a;
                delete b;
                delete c;
        }
        void doThing()
        {
                a->doThing();
                b->doThing();
                c->doThing();
        }

private:
        SubSystemA* a;
        SubSystemB* b;
        SubSystemC* c;
};

void main()
{
        SubSystemA* a = new SubSystemA;
        SubSystemB* b = new SubSystemB;
        SubSystemC* c = new SubSystemC;

        a->doThing();
        b->doThing();
        c->doThing();

        delete a;
        delete b;
        delete c;

        cout << "-----外观模式-----" << endl;

        Facade* f = new Facade;
        f->doThing();
        delete f;
}
  • 输出
SubSystemA run
SubSystemB run
SubSystemC run
-----外观模式-----
SubSystemA run
SubSystemB run
SubSystemC run

评论已关闭