外观模式(Facade)

来源:互联网 发布:全能抽奖软件序列号 编辑:程序博客网 时间:2024/05/04 03:22
意图
为子系统中的一组接口提供一个一致的界面。
定义了一个高层接口,这个接口使得这一子系统更加容易使用

应用场景
  • 实现平台无关性。跨平台跨库的函数调用。
  • 同一个接口去读取不同的资源。
  • 硬件自动识别处理系统。

类图

参与者
  • Facade
    知道哪些子系统类负责处理请求
    将客户的请求代理给适当的子系统对象
  • Subsystem classes
    实现子系统的功能
    处理由Facade对象指派的任务
    没有Facade的任何相关信息:即没有指向Facade的指针
代码
#include <iostream>
using namespace std;
class SubSystemA
{
public:
    void FunctionA()
    {
        cout<<"调用子系统A方法"<<endl;
    }
};
class SubSystemB
{
public:
    void FunctionB()
    {
        cout<<"调用子系统B方法"<<endl;
    }
};
class SubSystemC
{
public:
    void FunctionC()
    {
        cout<<"调用子系统C方法"<<endl;
    }
};
class Facade
{
private:
    SubSystemA *pSubSA;
    SubSystemB *pSubSB;
    SubSystemC *pSubSC;
public:
    void MethodA()
    {
        cout<<"方法组:----"<<endl;
        pSubSA->FunctionA();
        pSubSB->FunctionB();
    }

    void MethodB()
    {
        cout<<"方法组:----"<<endl;
        pSubSA->FunctionA();
        pSubSC->FunctionC();
    }
};

int main()
{
    Facade *pFacade = new Facade();
    pFacade->MethodA();
    pFacade->MethodB();
    return 0;
}

原创粉丝点击