博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式09_代理模式
阅读量:4293 次
发布时间:2019-05-27

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

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

主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
实现
我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。
ProxyPatternDemo,我们的演示类使用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行显示。

方框为原有,圆边框为新增对象or关系。

可见,代理本身是通过持有原始对象,然后调用原始对象方法实现相关功能的,也就是说其实代理模式本身并没有改变任何逻辑流程,也没做太多流程等的抽象化,仅仅是转发了操作。实际使用中代理是解决权限or资源类问题,这一点也可以和适配器进行区分,适配器中的那个新增对象就可以看做代理(当然,他还实现了额外接口)。

代码样例:

public class ProxyImage implements Image{   private RealImage realImage;   private String fileName;   public ProxyImage(String fileName){      this.fileName = fileName;   }   @Override   public void display() {      if(realImage == null){         realImage = new RealImage(fileName);      }      realImage.display();   }}

转载地址:http://bgyws.baihongyu.com/

你可能感兴趣的文章
C语言变量的存储类别
查看>>
C语言结构体指针变量作函数参数
查看>>
C语言动态存储分配
查看>>
C++数据类型
查看>>
头文件——#include <filename.h>与#include "filename.h"区别
查看>>
新手入门陌生的布尔数据
查看>>
配电电网自动化FTU-DTU装置参数
查看>>
C++共用体的介绍
查看>>
继电保护装置规约104规约解析
查看>>
理解socket与tcp/ip编程相关函数
查看>>
BootLoader理解
查看>>
解决VS2010链接错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
查看>>
TCP/IP协议的连接与释放的三次握手过程及Socket套接字
查看>>
Socket建立网络连接方法
查看>>
TCP和UDP的区别
查看>>
Socket编程,实现通信
查看>>
C++虚函数的定义与意义
查看>>
互斥量、临界区、信号量、事件标志组和消息邮箱
查看>>
ucos2 事件 任务的通讯和同步 信号量 互斥量 消息邮箱 消息队列
查看>>
RT-thread任务调度算法
查看>>