在开发时,有时已经实现了一些接口,这些接口分布在不同的类或模块中.客户在使用时,需要使用几个接口的组合,但是并不关心这些接口在哪,怎么实现这些接口的.为了便于客户使用,给客户提供一个一致的界面,可以使用Facade模式.此模式定义了一个高层接口,使得子系统更加容易使用.
Facade模式的类结构图如下:
其实现如下:
//Facade.h
//Facade.h #ifndef _FACADE_H_ #define _FACADE_H_ class Subsystem1 { public: void Operation(); }; class Subsystem2 { public: void Operation(); }; class Facade { public: Facade(); ~Facade(); void WrapperOperation(); private: Subsystem1* sub1; Subsystem2* sub2; }; #endif//Facade.cpp
//Facade.cpp #include "Facade.h" #include<iostream> using std::cout; using std::endl; void Subsystem1::Operation() { cout<<"Subsystem1 Operation"<<endl; } void Subsystem2::Operation() { cout<<"Subsystem2 Operation"<<endl; } Facade::Facade() { sub1=new Subsystem1(); sub2=new Subsystem2(); } Facade::~Facade() {} void Facade::WrapperOperation() { cout<<"Facade Operation"<<endl; sub1->Operation(); sub2->Operation(); }//main.cpp
//main.cpp #include"Facade.h" int main() { Facade* fa=new Facade(); fa->WrapperOperation(); return 0; }