博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--代理模式Proxy(结构型)
阅读量:4691 次
发布时间:2019-06-09

本文共 869 字,大约阅读时间需要 2 分钟。

一、代理模式

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

代理模式分为四种:

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

虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的对象。

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

智能指引:当调用目标对象时,代理可以处理其他的一些操作。(智能指针)

二、UML图

三、例子

(1)虚代理

考虑一个可以在文档中嵌入图形对象的文档编辑器。有些图形对象的创建开销很大。但是打开文档必须很迅速,因此我们在打开文档时应避免一次性创建所有开销很大的对象。这里就可以运用代理模式,在打开文档时,并不打开图形对象,而是打开图形对象的代理以替代真实的图形。待到真正需要打开图形时,仍由代理负责打开。

class Image{public:    Image(string name): m_imageName(name) {}    virtual ~Image() {}    virtual void Show() {}protected:    string m_imageName;};class BigImage: public Image{public:    BigImage(string name):Image(name) {}    ~BigImage() {}    void Show() { cout<<"Show big image : "<
<
Show(); }};int main(){ Image *image = new BigImageProxy("proxy.jpg"); //代理 image->Show(); //需要时由代理负责打开 delete image; return 0;}

转载于:https://www.cnblogs.com/justkong/p/6236118.html

你可能感兴趣的文章
js new到底干了什么,new的意义是什么?
查看>>
MyBatis 基础知识
查看>>
python基础3
查看>>
淘宝大牛们——晒一晒淘宝网技术内幕
查看>>
Maven如何手动添加jar包到本地Maven仓库
查看>>
多选框勾选 和 后台数据处理
查看>>
Sudoku Solver
查看>>
day022 python (re模块和 模块)
查看>>
各类手册收藏整理
查看>>
单片机状态机实现
查看>>
《嵌入式Linux基础教程学习笔记一》
查看>>
通用窗口类 Inventory Pro 2.1.2 Demo1(上)
查看>>
【小白的CFD之旅】19 来自计算网格的困惑
查看>>
将Winform程序快速转换为在浏览器中运行的程序
查看>>
dfhg发过火刚开始
查看>>
APIO2010 特别行动队
查看>>
super关键字
查看>>
多线程爬虫实现(下)
查看>>
GraphQL(二):GraphQL服务搭建
查看>>
JS中的函数浅析
查看>>