java 代理模式
2016-03-28 14:38
381 查看
通过此例说明代理模式的作用,在创建一个对象需要很大系统开销的时候,我们只需要给用户一个代理对象,而在需要使用对象的时候,再去实例化对象,从而减少不必要的系统开销
加载一个很大的图片模拟系统开销
图片接口
加载大图片的实现
图片的代理
TEST
加载一个很大的图片模拟系统开销
图片接口
package com.meteor.design_pattern.proxy; /** * Created by Meteor on 2016/3/27. */ public interface Image { void show(); }
加载大图片的实现
package com.meteor.design_pattern.proxy; /** * 使用该BigImage模拟一个很大的图片 * Created by Meteor on 2016/3/27. */ public class BigImage implements Image { public BigImage(){ try { //暂停模拟系统开销 Thread.sleep(3000); System.out.println("图片装在成功"); } catch (InterruptedException e) { e.printStackTrace(); } } public void show() { System.out.println("绘制实际的大图片"); } }
图片的代理
package com.meteor.design_pattern.proxy; /** * Created by Meteor on 2016/3/27. */ public class ImageProxy implements Image{ private Image image; public ImageProxy(Image image){ this.image = image; } /** * overide show() * 该方法用于控制对被代理对象的访问 * 并根据需要负责创建和删除被代理对象 */ public void show(){ if(image == null){ image = new BigImage(); } image.show(); } }
TEST
package com.meteor.design_pattern.proxy; /** * Created by Meteor on 2016/3/27. */ public class BigImageTest { public static void main(String[] args) { long start = System.currentTimeMillis(); Image image = new ImageProxy(null); System.out.println("系统得到Image对象的时间开销:"+(System.currentTimeMillis()-start)); //只有实际调用image代理的show()方法时,程序才会真正创建被代理对象 image.show(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树