外观模式
为各个不同的类提供统一的接口,然后通过外观模式将其组合起来,对外提供一个统一的接口。将子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。相当于存在一种委托的关系。
**例如:**现在有一个相机,想要拍出漂亮的照片,就需要自己手动调节光圈、快门,但是如果想要方便简单,就需要外观模式,照相机变成自动挡,只需要自己对准目标按下快门,所有需要手动调整的都变成自动调节。
#include <iostream>
#include <cstring>
using namespace std;
class SubSys
{
public:
virtual ~SubSys(){}
virtual void doing()=0;
};
class SubSysA : public SubSys
{
public:
virtual void doing(){
cout<<"SubSysA doing"<<endl;
}
};
class SubSysB : public SubSys
{
public:
virtual void doing(){
cout<<"SubSysB doing"<<endl;
}
};
class SubSysC : public SubSys
{
public:
virtual void doing(){
cout<<"SubSysC doing"<<endl;
}
};
class Facade
{
public:
Facade(){
A = new SubSysA();
B = new SubSysB();
C = new SubSysC();
}
void doing()
{
A->doing();
B->doing();
C->doing();
}
private:
SubSys *A;
SubSys *B;
SubSys *C;
};
int main()
{
SubSys *a = new SubSysA();
a->doing();
SubSys *b = new SubSysB();
b->doing();
SubSys *c = new SubSysC();
c->doing();
Facade *facade = new Facade();
facade->doing();
delete facade;
delete a;
delete b;
delete c;
return 0;
}