不知道该怎么写这篇博文,facade模式,嗯,应该可以这么说它是一种低程度的对象聚合,在具体实现的基础上进行一次整合,实现较高层次的功能实现,就如笔者看到的教材举

得例子那样,毕业时需要三个章,一个是宿舍,一个是图书馆,另外一个是户籍科,将所有的这三个章盖完,则说明,你可以离校了,每盖一个章都需要不同的具体实现,但是离

校时并不需要这些细节,他们只需要看到这三个章已经全部盖完即可,facade模式如下图所示:

facade模式_子类

facade模式不管具体的实现,只是提供SubSystem1和SubSystem2接口,不需要我们自己进行SubSystem1和Subsystem2的具体实现细节,facade实现了一个较为完整的功

能,而SubSystem1和SubSystem2则是具体的实现细节这三个类没有继承的关系,有的只是对象组合的方式,源代码:

class SubSystem1
{
public:
SubSystem1()
{;}
~SubSystem1()
{;}
public:
void Operation()
{
cout<<"SubSystem1::Operation\n";
}
};
class SubSystem2
{
public:
SubSystem2()
{;}
~SubSystem2()
{;}
void Operation()
{
cout<<"SubSystem2::Operation\n";
}
};
class facade
{
public:
facade(SubSystem1* tmp1,SubSystem2*tmp2)
{
ptr1=tmp1;
ptr2=tmp2;
}
~facade()
{;}
void Operation()
{
ptr1->Operation();
ptr2->Operation();
}
private:
SubSystem1* ptr1;
SubSystem2* ptr2;
};
int main()
{
SubSystem1* tmp1=new SubSYstem1();
SubSystem2* tmp2=new SubSystem2();
facade* fa=new facade(tmp1,tmp2);
fa->Operation();
}


其核心实现过程就是facade类得到需要实现的复杂功能子类的指针,然后在facade当中进行调用这几个功能的API,为Client提供简单的接口,其实不使用facade也是可以的,只是当Client实现该功能时比较复杂,需要调用多个功能API 函数。

Facade外观模式,就是一种较高层次的接口,实现的是复杂功能系统的子集,对系统的内部实现进行了封装,将功能的调用和实现进行了分离,但是不同的是调用系统功能的Client需要修改为facade的调用!!!