看了外观模式的一些资料。觉得外观模式就是为了解决实体类过多,而这些实体类就是为了做一件事情,组合起来。
因此外观模式出现了,他就是解决很多类的协调关系。用另个一类聚合这些类之间的事情。因此,当我们调用一个类的时候,所有的事情完成了
这个看起来就像一个外观一样。
图呢,和策略模式差不多,但是本质思想的功能是不一样的。
我在这里是用去征政府部门办事情,必须先去部门A,然后再去部门B。顺序不等乱。
但是外观模式出现了,就单独成立了一个部门,你直接去这个部门,就给你办好了。
代码
- // Facade.cpp : 定义控制台应用程序的入口点。
- //************************************************************************/
- /* @filename Facade.cpp
- @author wallwind
- @createtime 2012/10/21 22:25
- @function 门面模式
- @email wochenglin@qq.com
- */
- /************************************************************************/
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- class Department
- {
- public:
- Department(){}
- virtual ~Department(){}
- virtual void doAction()=0;
- };
- class DepartmentA:public Department
- {
- public:
- DepartmentA(){}
- virtual ~DepartmentA(){}
- void doAction()
- {
- cout<<"DepartmentA"<<endl;
- }
- };
- class DepartmentB:public Department
- {
- public:
- DepartmentB(){}
- virtual ~DepartmentB(){}
- void doAction()
- {
- cout<<"DepartmentB"<<endl;
- }
- };
- class Facade
- {
- public:
- Facade()
- {
- m_depa = new DepartmentA();
- m_depb = new DepartmentB();
- }
- ~Facade()
- {
- if (m_depa!=NULL)
- {
- delete m_depa;
- }
- if (m_depb!=NULL)
- {
- delete m_depb;
- }
- }
- void OneDO()
- {
- m_depa->doAction();
- m_depb->doAction();
- }
- private:
- Department* m_depa;
- Department* m_depb;
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- Facade face;
- face.OneDO();;
- return 0;
- }