本文适合新手和小白
目录
1、facade
(1)意图
为子系统中的一组接口提供一个一致的界面,facade模式定义一个高层接口,这个接口使得这一子系统更容易使用。
(2) 结构
教科书写画的比较简单,可以看的出就是facade在一个复杂得子系统中做几个关联即可。
facade知道哪些子系统负责处理请求,将客户的请求代理给适当的子系统对象。
subsystem classes 实现子系统的功能;处理有facade对象指派的任务;没有facade的任何相关信息,既没有facade的指针。
(3)适用性
1、为一个复制的子系统提供一个简单接口,子系统往往因为不断演化而变得越来越复查。大多数模式使用时会产生更小的类,这使得子系统更具有可重用性,也更容易对子系统进行订制,但也可以哪些不需要定制子系统用户带来一些使用上的困难。
2、客户程序与抽象类的和实现部分存在很大依赖性
3、当需要构建一个层次接口子系统时,使用facade模式定义子系统每层入口点,如果子系统之间是相互依赖的,则可以让他们仅通过facade通信,从而简化了他们的依赖关系。
2、代码实现
假如我们把一个复杂系统分成两个(one和two),那么我们只需要让一个facade完成这2个系统全部操作就行 ,facade定义一个关联即可
#include<iostream>
using namespace std;
class one{//复查子系统one 没有关于facade的指针
public:
void operation(){
cout<<"one中一个非常复查的运行"<<endl;//
}
};
class two{///复查子系统two 没有关于facade的指针
public:
void operation(){
cout<<"two中一个非常复查的运行"<<endl;
}
};
class facade{
public:
facade(){//通过facade的构造函数 完成对one与two两个子系统的定义和构造
a=new one;
b=new two;
}
void run(){//定一个方法对所有子系统实现运行
a->operation();
b->operation();
}
~facade(){
delete a;
delete b;
}
private://关联所有的系统部分
one *a;//关联系统a
two *b;//关联系统b
};
int main(){
facade *p=new facade;
p->run();
delete p;
return 0;
}