设计模式之代理模式 c++实现以及详解

proxy模式

<1>
作用:
为其他对象提供一种代理以控制对这个对象的访问。
<2>
代理模式的应用场景
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!
<3>
结构图
 
 


代理类,含有一个指向RealSubject对象的指针

<4>

/******************************************
*设计模式之代理模式                       *
*小明同学让大黑同学替他跟一暗恋女生表白   *
*by hnust_xiehonghao     2014.5.22 14:16  *
******************************************/
#include <iostream>
using namespace std;

class Person  //Subject
{
public:
	virtual func()
	{
		cout << "Person" << endl;
	}
};

class XiaoMing :public Person // RealSubject
{
public:
     virtual func()
	 {
		 cout << "XiaoMing love you!" << endl;
	 }
};

class DaHei : public Person //proxy
{
	XiaoMing XM;
public:
	virtual func()
	{
		 cout << "I am DaHei ,xiaoming Let Me tell you something :" << endl;
		 XM.func();
	}
};

int main()
{
    DaHei DH;
	//大黑对女孩说
	DH.func();
	return 0;
}


 

 


参考大话设计模式

<5>

代理模式主要分为四类

远程代理,虚代理,保护代理和智能引用。 其它还有挺多不常用的代理模式

 

1远程代理

负责对请求及其参数进行编码,并向不同地址空间中的实体发送已编码的请求; 

调用代理的方法,会被代理利用网络转发到远程执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。

 

2虚代理

可以缓存实体的附加信息,以便延迟对它的访问;

直到我们真正需要一个对象的时候才创建它,比如当加载图片时,我们打开不同的相册,才会去显示所选相册的图片。

当对象在创建前和创建中时,由虚拟代理来扮演对象的替身。对象创建后,代理就会将请求直接委托给对象。

浏览器就使用了代理


详细了解请参考http://blog.csdn.net/shuangde800/article/details/10324991


3保护代理

添加信息 检查调用者是否具有实现一个请求所必须的访问权限。

 4智能引用代理

当一个对象被引用时,提供一些额外的操作,例如将对象被调用的次数记录下来等。


 

proxy模式不一定要保持接口的一致性。只要能够实现间接控制,有时候损及一些透明性是可以接受的

 

参考 http://blog.csdn.net/eclipsexys/article/details/8678646

       http://www.jellythink.com/archives/301

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Proxy模式是一种常用的设计模式,也称为代理模式。它的作用是在某个对象外部提供一个代理类,用来控制对原始对象的访问。 Proxy模式通常用于以下场景: 1. 远程访问:当客户端需要访问远程对象时,我们可以通过代理类实现远程访问。代理类接收客户端的请求,并负责将请求传递给远程对象。远程对象将处理请求并将结果返回给代理类,代理类再将结果返回给客户端。 2. 安全控制:代理类可以用来限制对原始对象的访问。代理类可以检查客户端是否有足够的权限来访问原始对象,并在必要时拒绝访问。 3. 记录日志:代理类可以用来记录对原始对象的访问。代理类可以记录每个访问的时间、客户端的IP地址、请求的参数和结果等信息,从而方便后续的跟踪和分析。 4. 延迟加载:代理类可以用来实现延迟加载。当客户端请求访问原始对象时,代理类可以先返回一个占位符,并在必要时再加载原始对象。这样可以节省系统资源,提高系统的响应速度。 5. 缓存数据:代理类可以用来实现数据缓存。当客户端请求访问某个数据时,代理类先检查缓存中是否存在该数据,如果存在则直接返回缓存数据,否则才访问原始对象并将结果放入缓存中。 总之,Proxy模式是一种非常有用的设计模式,它可以在许多场合下起到很好的作用。如果您想要提高系统的性能、安全性或可维护性,那么Proxy模式是一种不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值