代理模式(一)

本文通过一个具体的Java示例,详细介绍了代理模式的概念及其在大图片加载场景中的应用。通过代理模式,可以有效提高应用程序的性能,并减少内存占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看到模式设计上有一章为“代理模式”,刚好在JAVA里也有代理模式这样的例子,研究半天,总算看懂了,以下是我的一点总结:

1、代理模式的用处:当我们需要访问某个对象时,我们可能并不关心能准确得到该对象,它只要一个能提供该功能的对象即可,此时我们就可以返回对象的代理。

2、怎样用JAVA实现:我们不直接实现类的代理,而是先新建一个接口。此例模拟一个大图片的装载类

(1)新建一个图片接口:

(2)新建一个大图片类,实现Image接口,为了模拟大图片的载入,我们让程序暂停2秒。

(3)新建BigImage类的代理,以后我们就依靠此类来进行对BigImage的代理。需要注意的是,我们是在重写接口的方法对BigImage进行初始化。这样新建一个ProxyImage对象的话,就可当成BigImage对象来使用。

(4)测试类

此例的结语:

  我们可以看到系统得到Image对象的开销为零。你可能要问了,虽然利用代理方式确实提高了性能,但是在ProxyImage类show()方法中还是新建了一个BigImage对象,还是要占用内存开销的。只不过这是一种拖延方式。真的有用吗?答案是肯定的。

  第一,我们把BigImage对象的创建放到真正使用的时候。这样能保证前面代码的运行流畅。还可以减少BigImage在内存中存在的时间。

  第二,在一些情况下可能都不会用要ProxyImage中的show(),这种延迟新建新建那就很有必要,在很大的程度上节省了内存的占用。

  第三,我在ProxyImage还添加了一个other()方法,以后如果要对此例添加其它操作,就可以只要操作ProxyImage类。这样便于扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值