Proxy 模式

在以下集中情况下可以用 Proxy模式解决问题:
1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy);

2)为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出) ,我们将这个操纵的过程交给一个代理去完成,GoF 称

之为远程代理(Remote Proxy);

3)对对象进行控制访问的时候,比如在 Jive 论坛中不同权限的用户(如管理员、普通用户等)将获得不同层次的操作权限,我们将这个工作交给一个代理去完成,GoF 称之为保

护代理(Protection Proxy)。

4)智能指针(Smart Pointer)。

 1 ////Proxy.h//
 2 #pragma once
 3 class Subject
 4 {
 5 public:
 6     virtual ~Subject() ;
 7     virtual void Request() = 0 ;
 8 protected:
 9     Subject();
10 private:
11 };
12 
13 class ConcreteSubject : public Subject
14 {
15 public:
16     ~ConcreteSubject();
17     ConcreteSubject();
18     void Request();
19 protected:
20 private:
21 };
22 class Proxy 
23 {
24 public:
25     Proxy();
26     Proxy(Subject* sub);
27     ~Proxy();
28     void Request();
29 protected:
30 private:
31     Subject* _sub ;
32 };
 1 ///Proxy.cpp///
 2 #include "Proxy.h"
 3 #include <iostream>
 4 using namespace std;
 5 Subject::~Subject()
 6 {
 7 
 8 }
 9 Subject::Subject()
10 {
11 
12 }
13 ConcreteSubject::ConcreteSubject()
14 {
15 
16 }
17 ConcreteSubject::~ConcreteSubject()
18 {
19 
20 }
21 void ConcreteSubject::Request()
22 {
23     cout<<"ConcreteSubject......request...."<<endl; 
24 }
25 
26 Proxy::Proxy()
27 {
28 
29 }
30 Proxy::Proxy(Subject* sub)
31 {
32     this->_sub = sub ;
33 }
34 
35 Proxy::~Proxy()
36 {
37     delete _sub ;
38 }
39 
40 void Proxy::Request()
41 {
42     cout<<"Proxy request...."<<endl;
43     _sub->Request();
44 }
 1 /main.cpp/
 2 #include "Proxy.h"
 3 #include <iostream>
 4 int main()
 5 {
 6     Subject* sub = new ConcreteSubject();
 7     Proxy* p = new Proxy(sub);
 8     p->Request();
 9     getchar();
10     return 0;
11 
12 }

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值