设计模式之十一------Facade(外观)
2012-10-23 08:58
239 查看
问题:
在实际应用中,我们可能封装了很多类,但是这些类只是一个业务的各个步骤,如果让客户端一个一个去调用这些接口,是非常繁琐的一件事。我们应该简化客户端的操作。
解决方案:
我们可以设计一个类:这个类组合了所有的必须的类,然后在一个方法中调用所有的实现,并把这个类提供给客户端,这就是Facade模式(外观)
源代码:
//This a programme about facade
#include <IOSTREAM>
using namespace std;
class SubSystem1{
public:
SubSystem1(){}
~SubSystem1(){}
void Operator(){
cout<<"SubSystem1...."<<endl;
}
};
class SubSystem2{
public:
SubSystem2(){}
~SubSystem2(){}
void Operator(){
cout<<"SubSystem2...."<<endl;
}
};
class Facade{
public:
Facade(){}
~Facade(){}
void OperateWrapper(){
sub1->Operator();
sub2->Operator();
}
private:
SubSystem1 *sub1;
SubSystem2 *sub2;
};
void main()
{
Facade *facade=new Facade;
facade->OperateWrapper();
}
在实际应用中,我们可能封装了很多类,但是这些类只是一个业务的各个步骤,如果让客户端一个一个去调用这些接口,是非常繁琐的一件事。我们应该简化客户端的操作。
解决方案:
我们可以设计一个类:这个类组合了所有的必须的类,然后在一个方法中调用所有的实现,并把这个类提供给客户端,这就是Facade模式(外观)
源代码:
//This a programme about facade
#include <IOSTREAM>
using namespace std;
class SubSystem1{
public:
SubSystem1(){}
~SubSystem1(){}
void Operator(){
cout<<"SubSystem1...."<<endl;
}
};
class SubSystem2{
public:
SubSystem2(){}
~SubSystem2(){}
void Operator(){
cout<<"SubSystem2...."<<endl;
}
};
class Facade{
public:
Facade(){}
~Facade(){}
void OperateWrapper(){
sub1->Operator();
sub2->Operator();
}
private:
SubSystem1 *sub1;
SubSystem2 *sub2;
};
void main()
{
Facade *facade=new Facade;
facade->OperateWrapper();
}
相关文章推荐
- (转载)设计模式学习笔记(十一)——Facade外观模式
- 设计模式十一 之 外观模式(Facade Pattern)
- 设计模式学习笔记(十一)——Facade外观模式
- 【设计模式学习笔记十一】【结构型模式】【外观模式(Facade)】
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式学习笔记(十一)——Facade外观
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式十一:facade(外观)——对象结构型模式
- 设计模式学习笔记(十一)——Facade外观模式
- 设计模式(十一)外观模式(Facade Pattern)
- 设计模式(十一):FACADE外观模式 -- 结构型模式
- 设计模式学习系列九:外观模式(Facade)
- 设计模式之Facade(外观)模式
- 设计模式--外观模式(Facade)
- 设计模式学习笔记(一)--Facade外观模式
- 设计模式——外观模式(Facade Pattern)
- 设计模式之外观模式 Facade
- 【设计模式】—— 外观模式Facade