读书人

《Head.First设计形式》的学习笔记(1

发布时间: 2012-09-08 10:48:07 作者: rapoo

《Head.First设计模式》的学习笔记(15)--代理模式

?
意图:

为另一个对象提供一个替身或占位符得以访问这个对象。

?

?

结构:

《Head.First设计形式》的学习笔记(15)--代理模式

?

接着我们来看RMI远程代理:


1.我们先在服务器注册好几个糖果机,由于我们现在使用RMI,我们需要构造糖果机和状态。

糖果机首先变成一个服务,我们为糖果机创建一个远程接口,让开接口提供了一组可以远程调用的的方法。

?

其中State要进行传送,所以我们要将其序列化:

?

接着我们来看客户端,也就是监控机:

?

接着我们在调用客户端的时候实现代理,然后用代理调用远程服务端的方法,代码如下:


?

?

?

接着我们将介绍虚拟代理,虚拟代理作为创建开销大的对象的代表。虚拟对象经常直到我们真正需要一个对象的时候才创建它。当对象在创建前和创建中,有虚拟对象来扮演对象的替身,对象创建后,代理就会将请求直接委托给对象。

例子:

我们经常会碰到JFrame加载一个大的网络图片,这时候我们就可以先使用代理显示正在加载图片,等图片真正加载好我们才“画”上这个图片,先看类图:


《Head.First设计形式》的学习笔记(15)--代理模式
?
?

Icon是使用Swing的Icon接口,在用户界面上显示图片。

接着我们来实现ImageIcon继承了Icon接口


?代理变成两个类。然后让我们看一下具体的例子,我们希望去保护一个人的具体信息,这些信息只有本人能够进行修改,而评价只有非本人进行修改。

首先我们先实现一个接口:

?

总结:

1.代理模式还有很多变种,例如缓存代理,同步代理,防火墙代理,和写入时复制代理

2.代理在结构上类似装饰者,但是目的不同哦,装饰者为对象加上行为,而代理是控制行为。

3.代理模式是要实现接口,而适配器是要改变接口的实现。

4.代理模式也会造成设计中类的数目增加。?

读书人网 >软件开发

热点推荐