设计模式笔记之---门面模式
门面模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。
模式说明:
子系统(SubSystem)
负责处理复杂的逻辑处理。不直接跟客户打交道。
门面(Facade)
负责跟子系统进行交互,提供简单易用的功能或接口给客户。
客户(Client)
通过门面和子系统进行交互,不需关心子系统的细节。
UML类图:
门面模式基本代码:
[cpp]
/********************************************************************
filename: Facade.h
created: 2012-09-28
author: firehood
purpose: firehood 学设计模式之---门面模式
*********************************************************************/
#pragma once
#include <iostream>
using namespace std;
class SubSystemA
{
public:
SubSystemA(void){}
~SubSystemA(void){}
void Operate1(void)
{
cout<<"SubSystemA:操作1"<<endl;
}
void Operate2(void)
{
cout<<"SubSystemA:操作2"<<endl;
}
};
class SubSystemB
{
public:
SubSystemB(void){}
~SubSystemB(void){}
void Operate1(void)
{
cout<<"SubSystemB:操作1"<<endl;
}
void Operate2(void)
{
cout<<"SubSystemB:操作2"<<endl;
}
};
class SubSystemC
{
public:
SubSystemC(void){}
~SubSystemC(void){}
void Operate1(void)
{
cout<<"SubSystemC:操作1"<<endl;
}
void Operate2(void)
{
cout<<"SubSystemC:操作2"<<endl;
}
};
class Facade
{
public:
Facade(void){}
virtual ~Facade(void){}
void MethodA(void)
{
cout<<"方法A:"<<endl;
m_SubSystemA.Operate1();
m_SubSystemB.Operate2();
m_SubSystemC.Operate2();
}
void MethodB(void)
{
cout<<"方法B:"<<endl;
m_SubSystemA.Operate1();
m_SubSystemB.Operate1();
m_SubSystemC.Operate1();
}
private:
SubSystemA m_SubSystemA;
SubSystemB m_SubSystemB;
SubSystemC m_SubSystemC;
};
客户端调用代码:
[cpp]
#include "Facade.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
cout<<"*************************************"<<endl;
cout<<"firehood 学设计模式之---门面模式"<<endl;
cout<<"*************************************"<<endl;
Facade facade;
facade.MethodA();
facade.MethodB();
system("pause");
return 0;
}
运行结果:
*************************************
firehood 学设计模式之---门面模式
*************************************
方法A:
SubSystemA:操作1
SubSystemB:操作2
SubSystemC:操作2
方法B:
SubSystemA:操作1
SubSystemB:操作1
SubSystemC:操作1
补充:软件开发 , C++ ,