代理模式及其与适配器模式对比

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

代理模式

背景:

1.某个被称为实主的类提供了一项服务,此服务是由主类型的一个接口类型指定的。

2.为了使服务更为通用,需对它进行修改。

3.用户和实主都不会因为修改而受影响。

解决方案

1.定义一个实现次接口类型的代理类,代理保留了实主的一个引用,同时它知道如何去定位实主。

2.用户使用一个代理对象。

3.每个代理会调用实主的相同方法,并提供必要的修改。

类图:

下面是适配器模式的类图:

关于适配器模式的说明可见上一篇:桥接和代理的对比

http://blog.csdn.net/notruiyi/archive/2005/10/24/514940.aspx

由上图可看出,一般的代理模式要设计统一的接口,而适配器模式却不需要,为什么呢?其实代理模式很多情况下还使用在分布式环境下,所以实现了统一的接口,就是实现了网络程序之间的协议,程序要通过这个接口进行交流而不是类。

实例类图:

程序示例:

Icon是java自带接口,所以不列出。

Image是java自带类,所以不列出。

-----------------------------------------------------------------------------------------------------------------

public class ImageProxy implements Icon{

private String name;

private ImageIcon image;

public ImageProxy(String name){

this.name = name;

image = null;

}

public void ensureImageLoaded(){

if(image == null)

image = new ImageIcon(name);

}

public int getIconWidth(){

ensureImageloaded();

return image.getIconHeight();

}

public int getIconHeight(){

ensureImageLoaded();

return image.getIconHeight();

}

public void paintIcon(Conponent c ,Graphics g ,int x ,int y){

ensureImageLoaded();

image.paintIcon(c,g,x,y);

}

}

由以上可见,在真正调用图象的数据以前,图象是不真正载入的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航