论坛首页 Java企业应用论坛

设计模式--代理模式

浏览 37259 次
精华帖 (12) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2009-12-04  
不错,整理的很清晰
0 请登录后投票
   发表时间:2009-12-04  
由易到难很容易理解,多谢lz
0 请登录后投票
   发表时间:2009-12-31  
怎么感觉有点像装饰模式啊
0 请登录后投票
   发表时间:2010-01-05  
tianmo2008 写道
enlife 写道
Proxy的newProxyInstance()方法返回的应该是代理对象吧,怎么能是真实对象呢

呵呵,大意了,谢谢指正


是不是还没改正???
0 请登录后投票
   发表时间:2010-01-21  
从struts2的FilterDispatcher、ActionProxy、ActionInvocation中了解到代理模式,但是并不是很理解代理模式,从楼主这篇中我才真正的明白了。谢谢!很不错的文单,思路很清晰。
0 请登录后投票
   发表时间:2010-01-29  
不错的文章,很容易理解
0 请登录后投票
   发表时间:2010-01-30   最后修改:2010-01-30
好像讲到代理常常要讲到动态代理,
如果代理是静态的,那么看起来和装饰器无二,所以代理常常都和动态以及反射联系在一起,总是和语言本身的能力有关……

晕了,我并不想点成精华贴
0 请登录后投票
   发表时间:2010-03-25  
tianmo2008 写道
从上面的例子可以看出代理模式的工作方式,首先,因为代理主题和真实主题都实现了共同的接口,这使我们可以在不改变原来接口的情况下,只要用真实主题对象的地方,都可以用代理主题来代替.其次,代理主题在客户和真实主题之间起了一个中介作用,利用这个中介平台,我们可以在把客户请求传递给真实主题之前,做一些必要的预处理.

不懂,为什么要强迫代理类RedWineProxy实现了抽象接口SellInterface?这样做有什么好处? 去掉这个接口一样能实现啊
0 请登录后投票
   发表时间:2010-04-26  
讲的不错,呵呵
0 请登录后投票
   发表时间:2010-04-26   最后修改:2010-04-26
代理模式通常是对原有对象的控制,不会增加新的行为,比如说原来干什么还是干什么,常见的比如cglib加上事务机制,但是没有增加新的行为,原有的服务未变。
但是装饰模式通常会加上新的行为,而且行为可以动态进行组合,可以有任意顺序,比如给墙刷颜色,先刷底色,再刷红色,再刷绿色,也可以先刷底色,再刷绿色,再刷红色。

代理模式和装饰模式都可以构造成在新类中引用对原有类,构成原有类的委托,这样就可以对原有类进行控制了,可以加新的行为,也可以加上其他控制。

不过有一点疑问,代理者和被代理者是聚合关系吗??聚合关系是整体和局部的关系,但是离开整体局部还可以生存,比如飞机场和飞机,代理模式两者关系,我觉得应该是依赖关系,更像是user-a关系,正因为是依赖关系,所以我们使用接口进行了解耦,而不是显示依赖直接注入实现类

引用
/** 
*真实主题角色,这里指红酒工厂角色,它实现了SellInterface接口 
*/ 
public class RedWineFactory implements SellInterface{  
     public Object sell(){  
         System.out.println("真实主题角色RedWineFactory 被调用了");  
         return new Object();  
     }  



另外,factory通常都是create方法创建一个类,这里是sell方法看似不太准确,应该是factory生成一个实现SellInterface的实现类,或者干脆搞一个抽象工厂,把实现细节交给工厂子类,工厂类实现一个create***接口

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics