设计模式 Design Parttern ——外观模式Facade http://blog.csdn.net/leeidea 1:头文件 #ifndef _FACADE_H_VANEY_ #define _FACADE_H_VANEY_ #include <iostream> using namespace std; /****************************************************************** 名称 :Facade.h 版本 :1.00 描述 :演示外观模式的概念 作者 :vaney.li@gmail.com http://blog.csdn.net/leeidea 日期 :2010年10月20日 版权 :vaney.li@gmail.com http://blog.csdn.net/leeide ******************************************************************/ /* 官方解释:The Facade defines a unified, higher level interface to a subsystem, that makes it easier to use. 我的理解:提供一个(组)统一的对外接口,保持这个(组)接口的不变形,接口实现均有各个子系统 接口组合实现,防止子系统重构后出现接口变化的问题 我的应用: */ //子系统1 class CSubsystem1 { public: CSubsystem1() { cout << "CSubsystem1()" << endl; } virtual ~CSubsystem1() { cout << "~CSubsystem1()" << endl; } public: virtual void Say() { cout << "CSubsystem1 Say" << endl; } }; //子系统2 class CSubsystem2 { public: CSubsystem2() { cout << "CSubsystem2()" << endl; } virtual ~CSubsystem2() { cout << "~CSubsystem2()" << endl; } public: virtual void Hello() { cout << "CSubsystem2 Hello" << endl; } }; //提供统一类 class CFacade { CSubsystem1* system1; CSubsystem2* system2; public: CFacade() { system1 = new CSubsystem1(); system2 = new CSubsystem2(); cout << "CFacade" << endl; } virtual ~CFacade() { cout << "~CPassword" << endl; } public: //对外的统一接口 virtual void Do(int id) { if(id == 1) system1->Say(); if(id == 2) system2->Hello(); //直接存入数据库,如果需要加密后在存呢 cout << "Store" << endl; } }; #define C_API extern "C" //用户 C_API int UsingFC(); #endif 2:源文件 #include "Facade.h" C_API int UsingFC() { CFacade* f = new CFacade(); //调用统一接口 f->Do(1); f->Do(2); return 1; } 3:用户文件main.c extern int UsingFC(); //系统默认入口 int _tmain(int argc, _TCHAR* argv[]) { return UsingFC(); }