关闭

设计模式之代理模式,C++实现

1599人阅读 评论(1) 收藏 举报

原创:http://blog.csdn.net/iuhsihsow


这一篇主要参照了《大话设计模式》



//代理模式:为其他对象提供一种代理以控制这个对象的访问
 //简而言之就是给对象加一个壳
 
 //1.远程代理
 //2.虚拟代理
 //3.安全代理
 //4.智能指引
 
 //问1:代理模式和聚合关系有什么区别,感觉适配器模式也能解决类似问题?
 //答1:强调了对象的行为


截下来的图,自己用visio画的太丑了



#include "stdafx.h"
 #include <windows.h>
 #include <iostream>
 using namespace std;
 
 //大话设计模式中的例子
 //A君让代理人B君给C小姐送礼物
 
 class IGiveGift
 {
 public:
 			IGiveGift(){;}
 	virtual ~IGiveGift(){;}
 
 	virtual void GiveGift() = 0; 
 };
 
 class PersonA : public IGiveGift
 {
 public:
 	PersonA(const std::string & strGirlName)
 	{
 		m_strGirlName = strGirlName;
 	}
 	void GiveGift()
 	{
 		std::cout<<m_strGirlName.c_str()<<","<<"送你的礼物!"<<endl;
 	}
 private:
 	std::string m_strGirlName;
 
 };
 
 class ProxyB : public IGiveGift
 {
 public:
 	void SetClientPerson(PersonA *pA)
 	{
 		m_pPersonA = pA;
 	}
 	void GiveGift()
 	{
 		m_pPersonA->GiveGift();
 	}
 private:
 	PersonA *m_pPersonA;
 };
 
 int _tmain(int argc, _TCHAR* argv[])
 {
 	//A君出现了,怀着对心上人的思念
 	PersonA *pA = new PersonA("C小姐");
 	//A君不好意思送礼物,于是找到了代理B君
 	ProxyB *pB = new ProxyB();
 	pB->SetClientPerson(pA);
 	//B君送礼来了
 	pB->GiveGift();
 
 	//落幕
 	if (pA)
 	{
 		delete pA;
 		pA = NULL;
 	}
 	if (pB)
 	{
 		delete pB;
 		pB = NULL;
 	}
 	return 0;
 }



3
0
查看评论

浅析JAVA设计模式之代理模式(二)

1 动态代理          在上一篇文章《浅析JAVA设计模式之代理模式(一)》中,已经简单介绍了代理模式的定义,以及分析和实现了静态代理类,接下来我们分析动态代理。     动...
  • minidrupal
  • minidrupal
  • 2014-05-02 22:14
  • 1617

最常用的设计模式---代理模式(C++实现)

代理模式:为其他对象提供一种代理以控制对这个对象的访问
  • lh844386434
  • lh844386434
  • 2014-01-09 17:23
  • 2052

JAVA设计模式之代理模式

【代理模式应用场景举例】 比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象...
  • jason0539
  • jason0539
  • 2014-04-05 07:07
  • 23468

设计模式(结构型)之代理模式(Proxy Pattern)

代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于...
  • yanbober
  • yanbober
  • 2015-05-04 18:48
  • 5694

23种设计模式(6):代理模式

先看一个例子,是有关于打游戏杀怪兽的。 //先定义一个游戏者接口 public interface IGamePlayer { //登陆游戏 public void login(String user, String password); //杀怪,网络游戏的主要角色 ...
  • psp0001060
  • psp0001060
  • 2016-02-04 22:05
  • 939

大话设计模式C++实现-第7章-代理模式

一、UML图 二、概念 代理模式:为其他对象提供一种代理以控制对这个对象的访问。 三、应用场景 (1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 (2)虚拟代理,是根据需要创建开销很大的对象。通过他来存放实例化需要很长时间的真实对象。例...
  • XD_lixin
  • XD_lixin
  • 2014-12-16 22:58
  • 1373

六 设计模式之代理模式(或称委托模式)

<br />定义   为其它对象提供一种代理以控制对这个对象的访问<br />类图<br /><br /><br /><br /><br /><br />通用代码 抽象主题类 pu...
  • guojun828
  • guojun828
  • 2011-01-20 23:26
  • 7161

Java设计模式-代理模式之动态代理(附源码分析)

Java设计模式-代理模式之动态代理(附源码分析) 动态代理概念及类图 上一篇中介绍了静态代理,动态代理跟静态代理一个最大的区别就是:动态代理是在运行时刻动态的创建出代理类及其对象。上篇中的静态代理是在编译的时候就确定了代理类具体类型,如果有多个类需要代理,那么就得创建多个。还...
  • yujin753
  • yujin753
  • 2015-06-26 17:37
  • 2256

设计模式之禅——代理模式(一)普通代理&强制代理&虚拟代理&动态代理

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。例子:玩家玩网游打怪、升级~见UML图 见代码//玩家接口类 public interface IGamePlayer { public void login(String user, String password); ...
  • TyroneRenekton
  • TyroneRenekton
  • 2016-08-25 15:12
  • 2624

设计模式:代理模式和反射原理

代理模式:为其他对象提供一种代理以控制对这个对象的访问。 Proxy和RealSubject类共同实现了Subject接口,这样一来,在任何地方使用RealSubject类的地方就可以使用Proxy类来代理。而在真正操作前可以对其进行一些其他操作。 静态代理: 静态代理即P...
  • xiaokui008
  • xiaokui008
  • 2012-03-05 20:20
  • 7204
    个人资料
    • 访问:193048次
    • 积分:3557
    • 等级:
    • 排名:第10998名
    • 原创:105篇
    • 转载:51篇
    • 译文:15篇
    • 评论:37条
    博客专栏
    文章分类
    站长统计