一、模式定义
外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。
二、模式结构
外观模式包含如下角色:
- Facade: 外观角色
- SubSystem:子系统角色
三、代码样例
#include <iostream> #include "Facade.h" using namespace std; int main(int argc, char *argv[]) { Facade fa; fa.wrapOpration(); return 0; }
/////////////////////////////////////////////////////////// // Facade.h // Implementation of the Class Facade // Created on: 06-十月-2014 19:10:44 // Original author: colin /////////////////////////////////////////////////////////// #if !defined(EA_FD130A87_92A9_4168_9B33_7A925C47AFD5__INCLUDED_) #define EA_FD130A87_92A9_4168_9B33_7A925C47AFD5__INCLUDED_ #include "SystemC.h" #include "SystemA.h" #include "SystemB.h" class Facade { public: Facade(); virtual ~Facade(); void wrapOpration(); private: SystemC *m_SystemC; SystemA *m_SystemA; SystemB *m_SystemB; }; #endif // !defined(EA_FD130A87_92A9_4168_9B33_7A925C47AFD5__INCLUDED_)
/////////////////////////////////////////////////////////// // Facade.cpp // Implementation of the Class Facade // Created on: 06-十月-2014 19:10:44 // Original author: colin /////////////////////////////////////////////////////////// #include "Facade.h" Facade::Facade(){ m_SystemA = new SystemA(); m_SystemB = new SystemB(); m_SystemC = new SystemC(); } Facade::~Facade(){ delete m_SystemA; delete m_SystemB; delete m_SystemC; } void Facade::wrapOpration(){ m_SystemA->operationA(); m_SystemB->operationB(); m_SystemC->opeartionC(); }
运行结果: