锁定老帖子 主题:设计模式--代理模式
精华帖 (12) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-04
不错,整理的很清晰
|
|
返回顶楼 | |
发表时间:2009-12-04
由易到难很容易理解,多谢lz
|
|
返回顶楼 | |
发表时间:2009-12-31
怎么感觉有点像装饰模式啊
|
|
返回顶楼 | |
发表时间:2010-01-05
tianmo2008 写道 enlife 写道 Proxy的newProxyInstance()方法返回的应该是代理对象吧,怎么能是真实对象呢
呵呵,大意了,谢谢指正 是不是还没改正??? |
|
返回顶楼 | |
发表时间:2010-01-21
从struts2的FilterDispatcher、ActionProxy、ActionInvocation中了解到代理模式,但是并不是很理解代理模式,从楼主这篇中我才真正的明白了。谢谢!很不错的文单,思路很清晰。
![]() |
|
返回顶楼 | |
发表时间:2010-01-29
不错的文章,很容易理解
|
|
返回顶楼 | |
发表时间:2010-01-30
最后修改:2010-01-30
好像讲到代理常常要讲到动态代理,
如果代理是静态的,那么看起来和装饰器无二,所以代理常常都和动态以及反射联系在一起,总是和语言本身的能力有关…… 晕了,我并不想点成精华贴 |
|
返回顶楼 | |
发表时间:2010-03-25
tianmo2008 写道 从上面的例子可以看出代理模式的工作方式,首先,因为代理主题和真实主题都实现了共同的接口,这使我们可以在不改变原来接口的情况下,只要用真实主题对象的地方,都可以用代理主题来代替.其次,代理主题在客户和真实主题之间起了一个中介作用,利用这个中介平台,我们可以在把客户请求传递给真实主题之前,做一些必要的预处理.
不懂,为什么要强迫代理类RedWineProxy实现了抽象接口SellInterface?这样做有什么好处? 去掉这个接口一样能实现啊 |
|
返回顶楼 | |
发表时间:2010-04-26
讲的不错,呵呵
|
|
返回顶楼 | |
发表时间: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***接口 |
|
返回顶楼 | |