外观模式(Facade)

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

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

类图
15135811-251053a4e3124df8bd31a81c8fb9f41f.png

参与者
  • 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;
}




转载于:https://www.cnblogs.com/controlfate/p/3424695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值