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

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

之为远程代理(Remote Proxy);

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

护代理(Protection Proxy)。

4)智能指针(Smart Pointer)。

 ////////////////////Proxy.h//////////////////////////////////////////////////////
#pragma once
class Subject
{
public:
virtual ~Subject() ;
virtual void Request() = ;
protected:
Subject();
private:
}; class ConcreteSubject : public Subject
{
public:
~ConcreteSubject();
ConcreteSubject();
void Request();
protected:
private:
};
class Proxy
{
public:
Proxy();
Proxy(Subject* sub);
~Proxy();
void Request();
protected:
private:
Subject* _sub ;
};
 ///////////////Proxy.cpp///////////////////////////////////////////////////////////
#include "Proxy.h"
#include <iostream>
using namespace std;
Subject::~Subject()
{ }
Subject::Subject()
{ }
ConcreteSubject::ConcreteSubject()
{ }
ConcreteSubject::~ConcreteSubject()
{ }
void ConcreteSubject::Request()
{
cout<<"ConcreteSubject......request...."<<endl;
} Proxy::Proxy()
{ }
Proxy::Proxy(Subject* sub)
{
this->_sub = sub ;
} Proxy::~Proxy()
{
delete _sub ;
} void Proxy::Request()
{
cout<<"Proxy request...."<<endl;
_sub->Request();
}
 /////////////main.cpp/////////////////////////////////////////////////////////////
#include "Proxy.h"
#include <iostream>
int main()
{
Subject* sub = new ConcreteSubject();
Proxy* p = new Proxy(sub);
p->Request();
getchar();
return ; }

Proxy 模式的更多相关文章

  1. Proxy模式:管理第三方API

    软件中的Barrier. 数据从程序移到DB中时,要跨越数据库的Barrier.消息从一个PC到另一个PC时,要跨越网络Barrier. 跨越可能是复杂的,很可能处理Barrier的Code会多于处理 ...

  2. 代理(Proxy)模式简介

    Proxy 模式简介 代理模式的两个应用: 打开文档时加载大图片 例如:如果有个对象是一张很大的图片,而这张图片需要花费很长时间才能显示出来,那么当这个图片包含在文档中的后面时,使用编辑器或浏览器打开 ...

  3. 设计模式之(三)Proxy模式

    今天学习Proxy模式.代理模式是在对已有对象操作困难或者不太方便时,选择用代理的方式对对象进行访问.Proxy实现的方法必须和被代理对象一致. 举一个简单的例子, 有一个Math类实现了IMath接 ...

  4. 【结构型】Proxy模式

    代理模式是指为其他对象提供代理来控制对象的访问.这种手段有时候可以给我们带来许多好处.如:通过代理可以实现异步响应处理:通过代理可以起到保护或限制对象的使用的作用,从而提高安全性. 在设计上,用户使用 ...

  5. .Net Core下通过Proxy 模式 使用 WCF

    .NET Core下的WCF客户端也是开源的,这次发布.NET Core 2.0,同时也发布了 WCF for .NET Core 2.0.0, 本文介绍在.NET Core下如何通过Proxy 消费 ...

  6. ActivityManager与Proxy模式的运用

    Android学习——ActivityManager与Proxy模式的运用 一 Proxy模式 意图: 为其他对象提供一种代理以控制这个对象的访问. 适用性: l  远程代理( Remote Prox ...

  7. Java设计模式(10)代理模式(Proxy模式)

    理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. Proxy是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,P ...

  8. 代理(Proxy)模式简介

    一.代理(Proxy)模式简介 代理模式是结构型模式. 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理对象要继承于抽象主题,并控制原对象的引用 二.简单例子 抽象主题类 ...

  9. Proxy模式 代理模式

    Android的 LocalWindowManager 和 WindowManagerImgl 都实现了WindowManager接口.LocalWindowManager 中保存一个WindowMa ...

随机推荐

  1. 对于利用pca 和 cca 进行fmri激活区识别的理解

    1.pca 抛开fmri研究这个范畴,我们有一个超长向量,这个超长向量在fmri研究中,就是体素数据.向量中的每个数值,都代表在相应坐标轴下的坐标值.这些坐标轴所组成的坐标系,其实是标准单位坐标系.向 ...

  2. 博弈论(男人八题):POJ 1740 A New Stone Game

    A New Stone Game Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5694   Accepted: 3119 ...

  3. CnPack for delphi xe5

    CnPack Team is made up of Chinese Programmers and Delphi / C++ Builder fans across the Internet. Our ...

  4. Hibernate(三)Hibernate 配置文件

    在上次的博文Hibernate(二)Hibernate实例我们已经通过一个实例的演示对Hibernate 的基本使用有了一个简单的认识,这里我们在此简单回顾一下Hibernate框架的使用步骤. Hi ...

  5. C++引用(Reference)

    引用(Reference)是C++语言相对于C语言的又一个扩充,类似于指针,只是在声明的时候用&取代了*.引用可以看做是被引用对象的一个别名,在声明引用时,必须同时对其进行初始化.引用的声明方 ...

  6. 免费开源的android项目分享

    免费开源的android项目分享:http://yun.baidu.com/share/link?shareid=2945649048&uk=3910054188

  7. C++经典KMP算法的实现

    #include <iostream> #include <algorithm> #include <vector> #include <string> ...

  8. asterisk帮助与国内论坛

    http://www.in2eps.com/fo-abnf/tk-fo-abnf-http.html www.asteriskguru.com/ http://www.voip-info.org/ h ...

  9. 第十七章、程序管理与 SELinux 初探

    ---恢复内容开始--- 什么是程序 (process) 在 Linux 底下所有的命令与你能够进行的动作都与权限有关, 而系统依据UID/GID以及文件的属性相关性判定你的权限!在 Linux 系统 ...

  10. IOS学习之路十五(UIView 添加背景图片以及加边框)

    怎样给UIview添加背景图片呢很简单,就是先给view添加一个subview,然后设为背景图片: 效果图如下: 很简单直接上代码: //设置内容 self.myTopView.backgroundC ...