设计模式-外观模式

适用情境:对客户端屏蔽各个子系统的细节,使用户可以用统一的接口使用子系统.

这里写图片描述

// subsystema.h
#ifndef SUBSYSTEMA_H
#define SUBSYSTEMA_H

class SubSystemA
{
public:
    SubSystemA();
    void MethodA();
};

#endif // SUBSYSTEMA_H
// subsystema.cpp
#include "subsystema.h"
#include <iostream>

SubSystemA::SubSystemA()
{}

void SubSystemA::MethodA()
{
    std::cout << "MethodA..." << std::endl;
}
// subsystemb.h
#ifndef SUBSYSTEMB_H
#define SUBSYSTEMB_H

class SubSystemB
{
public:
    SubSystemB();
    void MethodB();
};

#endif // SUBSYSTEMB_H
// subsystemb.cpp
#include "subsystemb.h"
#include <iostream>

SubSystemB::SubSystemB()
{}

void SubSystemB::MethodB()
{
    std::cout << "MethodB..." << std::endl;
}
// facade.h
#ifndef FACADE_H
#define FACADE_H

#include "subsystema.h"
#include "subsystemb.h"

class Facade
{
public:
    Facade();
    ~Facade();
    void FacadeMethod();
private:
    SubSystemA *m_subsysA;
    SubSystemB *m_subsysB;
};

#endif // FACADE_H
// facade.cpp
#include "facade.h"

Facade::Facade()
{
    m_subsysA = new SubSystemA();
    m_subsysB = new SubSystemB();
}

Facade::~Facade()
{
    delete m_subsysA;
    delete m_subsysB;
}

void Facade::FacadeMethod()
{
    m_subsysA->MethodA();
    m_subsysB->MethodB();
}

客户端:

// main.cpp
#include <iostream>

#include "facade.h"

using namespace std;

int main(int argc, char *argv[])
{
    Facade *facade = new Facade();
    facade->FacadeMethod();
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值