Proxy Pattern

1.Proxy Pattern最大的好处就是实现了逻辑和实现的彻底解耦。

2.Proxy Pattern结构图

3.实现

 1 #ifndef _PROXY_H_
 2 #define _PROXY_H_
 3
 4 class Subject
 5 {
 6 public:
 7     virtual ~Subject();
 8     virtual void Request() = 0;
 9 protected:
10     Subject();
11 private:
12 };
13
14 class ConcreteSubject:public Subject
15 {
16 public:
17     ConcreteSubject();
18     ~ConcreteSubject();
19     void Request();
20 protected:
21 private:
22 };
23
24 class Proxy:public Subject
25 {
26 public:
27     Proxy();
28     Proxy(Subject* sub);
29     ~Proxy();
30     void Request();
31 protected:
32 private:
33     Subject* _sub;
34 };
35
36 #endif

Proxy.h

 1 #include "Proxy.h"
 2 #include <iostream>
 3 using namespace std;
 4
 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 Proxy::Proxy()
26 {
27
28 }
29 Proxy::Proxy(Subject* sub)
30 {
31     _sub = sub;
32 }
33 Proxy::~Proxy()
34 {
35     delete _sub;
36 }
37 void Proxy::Request()
38 {
39     cout<<"Proxy request...."<<endl;
40     _sub->Request();
41 }

Proxy.cpp

 1 #include "Proxy.h"
 2 #include <iostream>
 3 using namespace std;
 4
 5 int main(int argc,char* argv[])
 6 {
 7     Subject* sub = new ConcreteSubject();
 8     Proxy* p = new Proxy(sub);
 9     p->Request();
10     return 0;
11 }

main.cpp

时间: 2024-08-11 07:33:31

Proxy Pattern的相关文章

设计模式 - 代理模式(proxy pattern) 未使用代理模式 详解

代理模式(proxy pattern) 未使用代理模式 详解 本文地址: http://blog.csdn.net/caroline_wendy 部分代码参考: http://blog.csdn.net/caroline_wendy/article/details/37698747 如果需要监控(monitor)类的某些状态, 则需要编写一个监控类, 并同过监控类进行监控. 但仅仅局限于本地, 如果需要远程监控, 则需要使用代理模式(proxy pattern). 具体方法: 1. 类中需要提供

设计模式之代理模式---Proxy Pattern

模式的定义 代理模式(Proxy Pattern)也叫做委托模式,定义如下: Provide a surrogate or placeholder for another object to control access to is. 为其他对象提供一种代理以控制对这个对象的访问. 类型 结构类 模式的使用场景 想想现实世界中,打官司为什么要找个律师?因为你不想参与中间过程的是是非非,只要完成自己的工作就可以,其它的事情比如事前调查,事后追查都可以由律师来负责,这就可以减少你的负担.代理模式使用

[Design Pattern] Proxy Pattern 简单案例

Proxy Pattern, 即代理模式,用一个类代表另一个类的功能,用于隐藏.解耦真正提供功能的类,属于结构类的设计模式. 下面是 代理模式的一个简单案例. Image 定义接口,RealImage, ProxyImage 都实现该接口.RealImage 具有真正显示功能,ProxyImage 作为代表,暴露给客户端使用. 代码实现: public interface Image { public void display(); } RealImage 的实现,提供真正的功能 public

【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理

这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用. 代理模式不会改变原来的接口和行为,仅仅是转由代理干某件事,代理能够控制原来的目标,比如:代理商,代理商仅仅会买东西,但并不会改变行为.不会制造东西. 让我们通过以下的代码好好理解一下这句话. 分类 静态代理和动态代理 静态代理 静态代理类图 代码演示样例 接口 pac

DesignPattern_Java:Proxy Pattern

代理模式 Proxy Pattern 委托模式 Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一种代理以控制对这个对象的访问. 抽象主题角色(Subject):该角色是真实主题和代理主题的共同接口,以便在任何可以使用真实主题的地方都可以使用代理主题. package com.DesignPattern.Structural.Proxy; public interface

NET设计模式 第二部分 结构性模式(13):代理模式(Proxy Pattern)

代理模式(Proxy Pattern) ——.NET设计模式系列之十四 Terrylee,2006年5月 摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切.这就是本文要说的Proxy模式. 主要内容 1.例说Proxy模式 2.Proxy模式效果及实现要点 …… 概述 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而

第12章 代理模式(Proxy Pattern)

原文   第12章 代理模式(Proxy Pattern) 代理模式 概述: 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切.这就是本文要说的Proxy模式. 结构图:     举例:       代练游戏,玩游戏,自己不想花时间去升级.委托给代练. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1

深入浅出设计模式——代理模式(Proxy Pattern)

模式动机在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用.代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务.通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作或者将新的对象作为真实对象的一个替身,这种实现机制即为代理模式,通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机. 模式定义代理模式(Proxy Pattern) :给某一个对象提

&quot;围观&quot;设计模式(12)--结构型之代理模式(Proxy Pattern)

维基百科 代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式. 所谓的代理者是指一个类可以作为其它东西的接口.代理者可以作任何东西的接口:网络连接.内存中的大对象.文件或其它昂贵或无法复制的资源.----WIKIPEDIA 个人理解 代理模式就是找另外的一个对象作为代理去为你实施请求,代理模式分为两种,一种是静态代理模式,另外一种是动态代理模式,静态代理模式是代理类为其创建一个对象,将需要代理的类的对象赋予代理类中的该对象,让代理类中该对象去代替需要代理的类的对象去执行一定的