首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

用代码跟UML图化解设计模式之《代理模式》

2012-11-05 
用代码和UML图化解设计模式之《代理模式》代理模式,就是相同的两个类,一个类做另一个类的代理人。出头露面的

用代码和UML图化解设计模式之《代理模式》

代理模式,就是相同的两个类,一个类做另一个类的代理人。出头露面的是第一个人,实际做事情的是第二人。

 

但是第一个人怎么知道第二个人能做那些事情。就继承了同一个父类。

 

用代码跟UML图化解设计模式之《代理模式》

 

CMon类代理他所有女儿的事情。 而不用他们女儿亲自出马,但是呢实际做事情的还是他们女儿。

下面上代码

 

// Proxy.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;class IWomen{public:virtual void study() =0;virtual void sleep() =0;};class CDaughter:public IWomen{public:CDaughter(){}~CDaughter(){}public:void study(){cout<<"daughter is studying"<<endl;}void sleep(){cout<<"daughter is sleeping"<<endl;}};class CMon:public IWomen{public://专门做女儿的代理人CMon(){m_woman = new CDaughter();}//做任何女人的代理人CMon(IWomen* woman):m_woman(woman){}~CMon(){delete m_woman;}void study(){m_woman->study();}void sleep(){m_woman->sleep();}private:IWomen *m_woman;};//第二个女儿class CSecDau:public IWomen{public:CSecDau(){}~CSecDau(){}public:void study(){cout<<"the second daughter is studying"<<endl;}void sleep(){cout<<"the second daughter is sleeping"<<endl;}};int _tmain(int argc, _TCHAR* argv[]){CMon* mon = new CMon;mon->sleep();mon->study();mon =new CMon(new CSecDau());mon->sleep();mon->study();return 0;}

 

输出结果:

用代码跟UML图化解设计模式之《代理模式》

 

更多文章,欢迎访问:

http://blog.csdn.net/wallwind

 

 

热点排行