您的位置:首页 > 其它

设计模式-外观模式

2016-10-25 20:08 134 查看
适用情境:对客户端屏蔽各个子系统的细节,使用户可以用统一的接口使用子系统.



// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式