model
implement
sub system
class SubSystem1
{
public:
SubSystem1();
~SubSystem1();
public:
void operation();
};
class SubSystem2
{
public:
SubSystem2();
~SubSystem2();
public:
void operation();
};
SubSystem1::SubSystem1()
{
}
SubSystem1::~SubSystem1()
{
}
void SubSystem1::operation()
{
cout << "SubSystem1 operation..." << endl;
}
SubSystem2::SubSystem2()
{
}
SubSystem2::~SubSystem2()
{
}
void SubSystem2::operation()
{
cout << "SubSystem2 operation..." << endl;
}
facade
class Facade
{
public:
Facade();
~Facade();
public:
void operationWrapper();
private:
SubSystem1* _sub1;
SubSystem2* _sub2;
};
Facade::Facade()
{
_sub1 = new SubSystem1();
_sub2 = new SubSystem2();
}
Facade::~Facade()
{
delete _sub1;
delete _sub2;
}
void Facade::operationWrapper()
{
_sub1->operation();
_sub2->operation();
}
应用
void facade_test()
{
Facade* facade = new Facade();
facade->operationWrapper();
}
总结
- 扩展:sub system可以扩展
- facade在上层提供了统一的接口
- 开发者不需要知道sub system,开发者只与facade交互