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

二、基本思想

     代理模式实际就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。

三、优缺点分析

GOOD:(适用场合)

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

                  例如:客户端程序调用代理就可以解决远程访问的问题

虚拟代理:是根据需要创建开销很大的对象,通过代理来存放实例化需要很长时间的真实对象,从而达到性能的最优化(例如浏览器使用代理模式来优化下载)

                  例如:打开大网页时,未马上打开的图片就是通过虚拟代理来替代了真实的图片,而代理存储了真实图片的路径和尺寸。

安全代理:用来控制真实对象的访问权限

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

四、标准UML图

(结构型模式)Proxy——代理模式

 

五、标准源码

#ifndef PROXY_H
#define PROXY_H
   3:  
// 定义了Proxy和RealSubject的公有接口,
// 这样就可以在任何需要使用到RealSubject的地方都使用Proxy.
class Subject
   7: {
public:
   9:     Subject(){}
virtual ~Subject(){}
  11:  
void Request() = 0;
  13: };
  14:  
// 真正使用的实体
class RealSubject
public Subject
  18: {
public:
  20:     RealSubject();
virtual ~RealSubject(){}
  22:  
void Request();
  24: };
  25:  
// 代理类,含有一个指向RealSubject对象的指针
class Proxy
public Subject
  29: {
public:
  31:     Proxy();
virtual ~Proxy();
  33:  
void Request();
  35:  
private:
  37:     RealSubject* m_pRealSubject;
  38: };
#endif

相关文章:

  • 2021-04-13
  • 2021-06-16
  • 2022-01-25
  • 2022-01-19
  • 2022-01-02
  • 2021-12-16
  • 2022-02-12
猜你喜欢
  • 2021-06-04
  • 2021-11-02
  • 2021-05-23
  • 2021-09-03
  • 2021-11-19
  • 2021-07-21
  • 2021-06-14
相关资源
相似解决方案