读书笔记之代理模式
来源:互联网 发布:天下三男号捏脸数据 编辑:程序博客网 时间:2024/06/12 07:17
即一个类代表另一个类的功能,这种类型的模式属于结构型模式,在代理模式中,我们创建现有对象的对象,以便向外界提供功能接口
为什么要使用代理模式?
在面向对象系统中,有些对象由于某些原型(例如对象创建开销很大,或者某些操作需要安全控制),直接去访问的话就会带来狠得多麻烦,我们可以在访问此对象时加上一个对此对象的访问层.
将一个直观的例子,你去夜总会找妹纸,从来都不是直接找到那个妹纸的吧,必须要先找阿姨才行,这个阿姨就是代理对象。
应用实例:windows的快捷方式,火车票代售点。
优点:职责清晰,高扩展,智能化
缺点:由于在客户端和主体之间设置了代理对象,可能造成请求的处理速度变慢;实现代理需要额外的工作,有些代理模式的实现非常复杂
注意事项:和适配器模式的区别在于适配器考虑改变对象的接口,而抽象模式不允许;装饰者模式在于增强功能,而代理模式是为了加强控制
代码演示:
1.创建image接口
public interface Image{ void display();}
2.实现image接口
public class RealImage implements Image { private String fileName; public RealImage(String fileName){ this.fileName = fileName; loadFromDisk(fileName); } @Override public void display() { System.out.println("Displaying " + fileName); } private void loadFromDisk(String fileName){ System.out.println("Loading " + fileName); }}
3.代理类
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(); }}
4.测试
public class ProxyPatternDemo { public static void main(String[] args) { Image image = new ProxyImage("test_10mb.jpg"); //图像将从磁盘加载 image.display(); System.out.println(""); //图像将无法从磁盘加载 image.display(); }}
proxyImage是一个代理类,减少了realImage对象加载内存的占用
阅读全文
0 0
- 读书笔记之代理模式
- 设计模式读书笔记之代理模式(Proxy)
- 设计模式读书笔记之代理模式(Proxy)
- 读书笔记之设计模式(代理模式)
- 大话设计模式读书笔记之动态代理
- 《大话设计模式》读书笔记之C++实现--chapter7代理模式
- 读书笔记5:代理模式
- 读书笔记5:代理模式
- 读书笔记--代理模式
- 设计模式读书笔记-----代理模式
- 设计模式读书笔记-----代理模式
- 设计模式读书笔记-----代理模式
- 设计模式读书笔记-----代理模式
- 设计模式读书笔记-----代理模式
- 大话设计模式读书笔记 代理模式
- 《读书笔记》设计模式——代理模式
- 《大话设计模式》读书笔记5 代理模式
- 【读书笔记】大话设计模式—代理模式
- Linux服务器 CentOS 6系列最小化安装优化脚本详解02————修改history记录、定时校正服务器时间、停止IPv6网络服务、调整最大文件打开数、关闭写磁盘I/O功能、配置SSH服务
- web页面一些移动端样式属性设置
- Android studio如何创建一个AIDL文件
- Leetcode——11. Container With Most Water
- mysql模糊查询的几种方法
- 读书笔记之代理模式
- 设置div中文字超出时自动换行和css实现文本超出N行之后显示省略号等
- DW下载激活和如何使用DW确定map图片的coords坐标
- Apache的URL重写
- 解读Cardinality Estimation算法(第三部分:LogLog Counting)
- 如何解决mysql安装过程中,第三步和第四步?
- js对象属性增删和数组元素增删
- linux线程为什么也称为轻量级进程
- 坑_Unity中导入自建DLL报错:Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in