// My_代理模式.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class 功能
{
public:
virtual void 送鲜花() = 0;
virtual void 送娃娃() = 0;
virtual void 送毛爷爷() = 0;
};
class 漂亮女孩
{
public:
char* GET()
{
return pname;
}
char* SET(char* pname)
{
return this->pname = pname;
}
private:
char* pname;
};
class 追求者 :public I功能
{public:
漂亮女孩 mm;
追求者(漂亮女孩 mm)
{
this->mm = mm;
}
void 送鲜花()
{
cout << mm.GET() << "送鲜花" << endl;
}
void 送娃娃()
{
cout << mm.GET() << "送娃娃" << endl;
}
void 送毛爷爷()
{
cout << mm.GET() << "送毛爷爷" << endl;
}
};
class 代理人:public I功能
{
追求者 *gg;
public:
void 送鲜花()
{
gg->送鲜花();
}
void 送娃娃()
{
gg->送娃娃();
}
void 送毛爷爷()
{
gg->送毛爷爷();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
漂亮女孩 *Bmm = new 漂亮女孩();
Bmm->SET("任培培");
代理人 dailiren;
追求者 *周思来 = new 追求者(*Bmm);
周思来->送鲜花();
周思来->送娃娃();
周思来->送毛爷爷();
return 0;
}
1_ 为什么需要代理模式? 以谈对象为例
很多人在街上遇到其他心仪女孩都没有勇气去开口搭讪去索取联系方式
这不是做不到,而是勇气问题,如果这时候你的一个朋友认识她,可以帮助你完成你的需求,
那么这位朋友就是你的代理人了.但是这个朋友万一背后捣鬼做些多余的动作呢??
所以需要约定一个框架(就是接口),让代理人只能去完成这些东西.
总结:代理模式存在的意义(个人理解):在需求方本应该能完成任务,却因为其他问题被制肘无暇分身时,帮助需求方完成任务.(说的是外卖小哥???)
以下是抄的:
优点: 1、职责清晰。 2、高扩展性。 3、智能化。
缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。