设计模式之代理模式学习

代理模式:为其他对象提供一种代理,以控制对这个对象的访问。

 

     Subject类,被代理的类。定义了RealSubjectProxy的接口。这样代理类就可以执行被代理的所有行为。RealSubject定义Proxy所代理的真实实体。Proxy类,代理类,与RealSubject有相同的接口。

#include<iostream>
using namespace std;
class Subject
{
	public:
	   Subject()
	   {
   		
   	   }
   	   virtual void function1()=0;
   	   virtual void function2()=0;
   	   virtual void function3()=0;
   	   
	
};
class RealSubject:public Subject
{
	public:
	   virtual void function1()
	   {
   		 //function1的功能 
   		 std::cout<<"ReadSubject function1"<<endl;
   	   }
   	   virtual void function2()
   	   {
   	   	//function2的功能 
   	   	std::cout<<"ReadSubject function2"<<endl;
   	   }
   	   virtual void function3()
   	   {
   	   	//function3的功能 
   	   	std::cout<<"ReadSubject function3"<<endl;
   	   }
	
};
class Proxy:public Subject
{
	public: 
	   RealSubject *rs;
	public: 
	   Proxy()
	   {
   		 rs=new RealSubject;
   	   }
   	   virtual void function1()
   	   {
   	   	  rs->function1();
   	   }
   	   virtual void function2()
   	   {
   	   	  rs->function2();
   	   }
   	   virtual void function3()
   	   {
   	   	  rs->function3();
   	   }
	
} ;
int main(int argc,char**argv)
{
	Proxy proxy;
	proxy.function1();
	proxy.function2();
	proxy.function3();	
	return 0;
}


 

     通俗的说就是在访问对象时引入一定程度的间接性,正是有了这种间接,可以附加多种用途。

     一般有以下几种应用:

     一:远程代理,也就是为对象在不同的地址空间提供局部代表,这样就可以隐藏一个对象存在于不同地址空间的事实。

     二:虚拟代理,根据需要创建开销很大的对象,通过它来存在实例化时间很长的真实对象。

     三:安全代理,控制真是访问对象的权限。

     四:智能指引,是指当调用真实对象时,代理处理另外一些事情。

     现在看来代理模式也并不是多么新奇。很早之前就有接触,以前刚学习C++的时候接触过,《C++大学教程》里有介绍。记得当时是为了隐藏类的成员变量,因为当类创建好后,虽然类的实现可以以dll的形式提供,但是类的头文件还是必须提供给客户的,这就造成某些信息的泄漏。如成员变量。引入了代理后,仅仅只需要将代理的头文件暴露给客户,实现了隐藏被代理类的目的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值