[设计模式]Facade外观模式
问题
举一个生活中的小例子,大凡开个学或毕过业的都会体会到这样一种郁闷:你要去n个地方办理n个手续。但是实际上我们需要的就是一个最后一道手续的证明而已,对于前面的手续是怎么办的,到什么地方办理我们都不感兴趣。
facade外观模式为子系统的一组接口提供一个一致的界面, 使用户使用起来更加方便。
Facade模式在高层提供了一个统一的接口,解耦了系统。设计模式中还有另一种模式Mediator也和Facade有类似的地方。但是mediator主要目的是对象间的访问的解耦(通讯时候的协议)。
小demofacade.h
#pragma once#include <iostream>#include <string>using namespace std;class SubSysOne{public:void Method(){cout<<"方法一"<<endl;}};class SubSysTwo{public:void Method(){cout<<"方法二"<<endl;}};class SubSysThree{public:void Method(){cout<<"方法三"<<endl;}};class Facade{private:SubSysOne* sub1;SubSysTwo* sub2;SubSysThree* sub3;public:Facade(void){sub1=new SubSysOne();sub2=new SubSysTwo();sub3=new SubSysThree();}~Facade(void){delete sub1;delete sub2;delete sub3;}void FacadeMethod(){sub1->Method();sub2->Method();sub3->Method();}};
main.cpp
#include "Facade.h"#include <stdlib.h>void main(){Facade* test=new Facade();test->FacadeMethod();delete test;system("pause");}