设计模式之代理模式的学习思考
来源:互联网 发布:同知 编辑:程序博客网 时间:2024/06/01 08:51
总觉得设计模式名字起的很好,形象地就代表它的功能。
正如代理模式,它是使用一个类代表另一个类的功能,属于结构型设计模式。
通过创建对象的对象,来提供访问功能的接口。
应用举例:快捷方式、代售点等。
设计:
- 一个接口,两个分别实现类,一个是功能类,一个是代理类,代理类里有功能类对象的数据成员
代码:
interface Image{ void display();}class RealImage implements Image{ private String fileName; private void loadFromDisk(String fileName){ System.out.println("Loading"+fileName); } public RealImage(String fileName){ this.fileName=fileName; loadFromDisk(fileName); } public void display() { System.out.println("Displaying:"+fileName); }}class ProxyImage implements Image{ private RealImage realImage; private String fileName; public ProxyImage(String fileName) { this.fileName = fileName; } public void display() { if(realImage==null){ realImage=new RealImage(fileName); } realImage.display(); }}public class ProxyPatternDemo { public static void main(String[] args) { Image image=new ProxyImage("dog.jpg"); image.display(); System.out.println(""); //因为realImage已经被初始化了 image.display(); }}
输出:
Loadingdog.jpgDisplaying:dog.jpgDisplaying:dog.jpg
总结:
- 优点:职责清晰、高拓展性
- 缺点:代理模式可能会复杂化
- 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
- 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
阅读全文
0 0
- 设计模式之代理模式的学习思考
- 设计模式--对代理模式的思考之java动态代理
- 设计模式之单例模式的学习思考
- 设计模式之创建者模式的学习思考
- 设计模式之原型模式的学习思考
- 设计模式之适配器模式的学习思考
- 设计模式之桥接模式的学习思考
- 设计模式之过滤器模式的学习思考
- 设计模式之组合模式的学习思考
- 设计模式之装饰器模式的学习思考
- 设计模式之外观模式的学习思考
- 设计模式之享元模式的学习思考
- 设计模式之命令模式的学习思考
- 设计模式之解释器模式的学习思考
- 设计模式之迭代器模式的学习思考
- 设计模式之中介者模式的学习思考
- 设计模式之备忘录模式的学习思考
- 设计模式学习的思考
- maven运行原理分析,源码分析
- 经典悖论
- 号面向对象
- ESP8266作为服务器进行通讯
- Codeforces 230C Shifts(模拟+展开字符串)
- 设计模式之代理模式的学习思考
- 图的遍历
- 图片上传--IllegalStateException File has been moved
- [BZOJ 1087][SCOI 2005] 互不侵犯King 状态压缩DP
- 虚拟机三种网络模式&桥接模式设置步骤
- java 修改项目web访问根目录
- 解决项目中报Target runtime Apache Tomcat v7.0 is not defined(项目名称处报错,项目内文件没错)
- BZOJ 4034 树上操作 (树链剖分 线段树)
- Hdu 2054 A == B ?