设计模式目录
外观模式:这个应该是一个架构模式,把一个模块的外部接口用一个外部类提供出去,对外部来说只有这个类(Facade)是可以访问的。(记得模式和终结者模式做对比学习)
代码(c++)
#include <iostream>
using namespace std;
#include <string>
// 抽象层
class IFacade{
public:
virtual void funA()=0;
virtual void funB()=0;
virtual void funC()=0;
};
class ClientA{
public:
IFacade* facade;
void fun(){
facade->funA();
}
};
class ClientB{
public:
IFacade* facade;
void fun(){
facade->funB();
}
};
class ClientC{
public:
IFacade* facade;
void fun(){
facade->funC();
}
};
// 具体层
class Facade{
};
class FA{
public:
void funA(){
cout<<"FA::funA\n";
}
};
class FB{
public:
void funB(){
cout<<"FB::funB\n";
}
};
class FC{
public:
void funC(){
cout<<"FC::funC\n";
}
};
class Facade1: public IFacade{
public:
FA* fa;
FB* fb;
FC* fc;
Facade1(){
fa = new FA();
fb = new FB();
fc = new FC();
}
virtual void funA(){
fa->funA();
}
virtual void funB(){
fb->funB();
}
virtual void funC(){
fc->funC();
}
};
//客户端调用
int main()
{
cout<<"外观模式模式\n";
Facade1* f1 = new Facade1();
ClientA* ca = new ClientA();
ca->facade = f1;
ClientB* cb = new ClientB();
cb->facade = f1;
ClientC* cc = new ClientC();
cc->facade = f1;
ca->fun();
cb->fun();
cc->fun();
//看代码不用考虑以下内容
int cin_a;
cin>>cin_a;
return 0;
}