随笔 - 37  文章 - 29  trackbacks - 0


常用链接

留言簿(3)

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

12、PROXY?跟MM在网上聊天,一开头总是“hi,你好”,“你从哪儿来呀?”“你多大了?”“身高多少呀?”这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自动的回答,接收到其他的话时再通知我回答,怎么样,酷吧。

代理模式:代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。

public interface Subject {
    public void methodA();
}
public class RealSubject implements Subject {
    public void methodA() {
       System.out.println("...");
    }
}
public class Proxy implements Subject {
    private RealSubject r;
    public void methodA() {
       if(r == null) {
          r = RealSubject();
       }
       r.methodA();
       //do something...
    }
}
我觉得可以理解为通过RealSubject的兄弟Proxy去调用RealSubject的方法

和Decorator模式的比较:
相同点:Both patterns use a proxy that forwards method calls to another object, known as the real subject.
不同点:with the Proxy pattern, the relationship between a proxy and the real subject is typically set at compile time, whereas  decorators can be recursively constructed at runtime.
从另一种角度考虑:
proxy是对类的代理,强调的是对已有功能的代理;而decorator更多的是用于增加装饰,来丰富类的内涵。


Adapter和Proxy的区别:
adapter是适配adaptee和target之间的关系,proxy是realSubject对subject的代理。
adaptee和target无关系,realSubject和subject有继承关系。这就是他们的区别。


这里有篇文章很不错,链接一下:
http://yichao.blog.edu.cn/user2/yichaozhang/archives/2006/1501606.shtml

又找到网上另一个见解:
proxy 和adapter有一定类似,都是属于一种衔接性质的。
区别是很明显的,从大体上说:proxy是一种原来对象的代表,其它需要与这个对象打交道的操作都是和这个代表交涉,就象歌星的经纪人一样。
adapter目的则不是要虚构出一个代表者,而是为应付特定使用目的,将原来的类进行一些组合。


posted on 2008-01-24 13:48 EvanLiu 阅读(499) 评论(0)  编辑  收藏 所属分类: 设计模式

只有注册用户登录后才能发表评论。


网站导航: