Proxy(代理)-对象结构型模式

时间:2021-11-04 03:27:32

1.意图

为其它对象提供一种代理以控制对这个对象的访问。

2.别名

Surrogate.

3.动机

通过Proxy可以达到对一个对象的访问控制。

4.适用性

  • 远程代理  为一个对象在不同地址空间提供局部代表。
  • 虚代理  根据需要创建开销很大的对象。
  • 保护代理 控制对原始对象的访问。
  • 智能指引 取代了指针,它在访问对象时执行一些附加操作。

5.结构

Proxy(代理)-对象结构型模式

6.代码实例

//Subject.h

#include <memory>

class Subject
{
public:
virtual void Request() = ;
}; class RealSubject : public Subject
{
public:
void Request();
}; class Proxy : public Subject
{
public:
Proxy();
void Request();
private:
std::shared_ptr<Subject> m_pSubject;
};
//Subject.cpp

#include <iostream>
#include "Subject.h" void RealSubject::Request()
{
std::cout<<"RealSubject Request Exectued" << std::endl;
} Proxy::Proxy()
{
m_pSubject = std::shared_ptr<Subject>(new RealSubject);
} void Proxy::Request()
{
m_pSubject->Request();
}
//Client.cpp

#include "Subject.h"

int main()
{
std::shared_ptr<Subject> pProxy(new Proxy);
pProxy->Request(); while();
}

7.测试结果

Proxy(代理)-对象结构型模式

8.效果

  • 远程代理 可以隐藏一个对象存在于不同地址空间的事实。
  • 虚代理    可以进行最优化,例如根据要求创建对象。
  • 保护代理和智能引用  都允许在访问一个对象时有一些附加的内务处理。

Proxy(代理)-对象结构型模式的更多相关文章

  1. 组合模式&sol;composite模式&sol;对象结构型模式

    组合模式/composite模式/对象结构型 意图 将对象组合成树形结构以表示"整体--部分"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 动机 C ...

  2. Bridge模式——对象结构型模式

    今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...

  3. Facade(外观)-对象结构型模式

    1.意图 为子系统中的一组接口提供一个一致的接口,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 2.动机 将一个系统划分成若干子系统有利于降低系统的复杂性.一个常见的设计目 ...

  4. Decorator&lpar;装饰)-对象结构型模式

    1.意图 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 2.别名 包装器 Wrapper. 3.动机 给某个对象而不是整个类添加一些功能.一个较为灵 ...

  5. Bridge(桥接)-对象结构型模式

    1.意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 2.动机 在抽象类与它的实现之间起到桥梁作用,使它们可以独立地变化. 3.适用性 不希望在抽象和它的实现部分之间有一个固定的绑定关系. ...

  6. Adapter&lpar;适配器)-类对象结构型模式

    1.意图 将一个类接口转换成客户希望的另外一个接口.Adapter模式使那些原本不能一起工作的类,可以一起工作. 2.别名 包装器 Wrapper. 3.动机 一个应用可能会有一些类具有不同的接口,并 ...

  7. Flyweight&lpar;享元)--对象结构型模式

    1.意图 运用共享技术有效地支持大量细粒度的对象. 2.动机 Flyweight模式描述了如何共享对象,使得可以细粒度地使用它们,而无需高昂的代价.flyweight是一个共享对象,它可以同时在多个场 ...

  8. Composite(组合)--对象结构型模式

    1.意图 将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 2.动机 可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成 ...

  9. C&num;设计模式之十三代理模式(Proxy)【结构型】

    一.引言   今天我们要讲[结构型]设计模式的第七个模式,也是"结构型"设计模式中的最后一个模式,该模式是[代理模式],英文名称是:Proxy Pattern.还是老套路,先从名字 ...

随机推荐

  1. iOS UITableView 与 UITableViewController

    很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...

  2. npm link 安装本地模块,将本地模块cli化

    第三方学习地址 http://mp.weixin.qq.com/s?__biz=MzAxMTU0NTc4Nw==&mid=2661157390&idx=1&sn=6d96e54 ...

  3. Oracle 树操作&lpar;select…start with…connect by…prior&rpar;

    摘自:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html oracle树查询的最重要的就是select…start with ...

  4. 百度web前端面试2015&period;10&period;18

    邮件里通知的周日下午两点参加百度校招面试,我13:10分就到了,前台先让我拿了个面试资格单(上面是我的信息),然后在web前端面试入口排队,面试在百度食堂举行的,等了大概1个小时,放我去面试.都是一对 ...

  5. SSIS包部署

    1.ssis包部署可以生成部署文件,部署到sqlserver,再通过sqlserver计划作业来执行. 2.也可以通过shell来调用dtsx ,通过windows计划任务来定时调用exe. 不论是哪 ...

  6. To get TaskID&&num;39&semi;s Integer ID value from the GUID in SharePoint workflow

    list.GetItemByUniqueId(guid).ID int itemID = spList.Items[new Guid("")].ID;

  7. android 反纠结app开发&colon; 在线程中更新view

    大体上想实现一个思路: 对一个view 的内容进行不停地变化, 通过按钮停止这种变化,以达到随机选择的目的. 开发过程中 使用textview 模拟,  建立线程 mythread = new Thr ...

  8. JavaScript基础精讲

    ---------------------------------------------------------------------------------------------------- ...

  9. java发送短信验证码

    业务: 手机端点击发送验证码,请求发送到java服务器端,由java调用第三方平台(我们使用的是榛子云短信http://smsow.zhenzikj.com)的短信接口,生成验证码并发送. SDK下载 ...

  10. 数字图像特征提取之HOG特征

    1.灰度化:(以便可以使用sobel等算子计算梯度)2.gamma校正: (降低光照影响)3.求每个像素的梯度和方向: (利用任意一种梯度算子,例如:sobel,laplacian等,对该patch进 ...