JiveJdon Community Forums
在线155人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 4 回复 / 1
 发表新帖子   回复该主题贴
smillton1

悄悄话
发表文章: 3
注册时间: 2007年06月08日 12:19
proxy和factory 2007年06月08日 12:19 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 设计模式(144)     
最近开始学习设计模式,刚学了factory,现在在看proxy。
想问个问题,factory是否可以看成是proxy的一种应用,工厂所proxy的是产品的构造函数?
不知道这样的理解是不是正确,如果这样的理解有问题,能否解释一下,谢谢各位啦
smillton1

悄悄话
发表文章: 3
注册时间: 2007年06月08日 12:19
re:proxy和factory 2007年06月11日 08:48 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
没人回答下吗?
banq

悄悄话
发表文章: 9313
注册时间: 2002年08月03日 17:08
回复:proxy和factory 2007年06月11日 11:38 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
>factory是否可以看成是proxy的一种应用
不是,factory和proxy都是模式,是同级别的,就象伯伯叔叔都是同一个长辈级别。它们之间可以联合使用,但在抽象层次上,都是一样的,不是谁可以成为谁的应用。
leadyu

悄悄话
发表文章: 47
注册时间: 2005年03月29日 12:53
回复:proxy和factory 2007年06月11日 13:17 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
2种模式属于不同的概念,我的理解是:

工厂主要解决几方面问题:

1)隔离上下文环境对于接口具体实现类的依赖性,工厂往往是基于接口的,比如对new的封装

2)为不同的上下文环境提供不同的对象构造方式,对外提供统一的构造行为,当对于一个对象的创建有不同的逻辑,达到一定复杂程度时又会派生出抽象工厂模式

3)集中对象的构造逻辑,而为什么需要集中管理构造逻辑呢?当对象的构造逻辑在系统设计中处于不稳定的状态,可能发生变化,那么我们就需要隔离上下文对于这样逻辑的依赖性。

这样的思想有一定的共性,那就是,尽量统一类似的逻辑,同时把稳定和易变的逻辑进行分离。应该说很多模式都是为了达到这么一个目的而产生。

当然,具体应用时,模式是灵活的,就拿工厂模式老说,现在越来越多的例子已经不光光应用它于对象的构造上,很多时候已经得到延伸,比如对于对象生命周期的管理。

总的来说,当对象的构造复杂,同时多变,那么我们就要考虑考虑工厂模式,而不是用new。

至于Proxy,GOF的书中所给的定义是:对于已有物件进行代理,从而达到对于物件访问的控制。

那么什么时候我们需要对已有类的功能进行代理呢?

比如说你家局域网封了**端口,你使用代理服务器,让你感觉跟正常的使用一样,这是网络访问功能的代理,那么像JAVA的RMI远程调用,通过客户端代理,让你感觉直接在访问远程对象。
,还有就比如说,权限控制,写日志等等。

另外一种情况,我并不是想对于已有类功能的访问进行控制,我可能只是想包装已有功能,做些自己额外的事情,也就是对已有功能的扩展,比如我之前写的监控组件,就是通过代理来进行访问的轨迹跟踪。

那么对于代理的实现,就有很多种,最简单的,就是静态编码,实现对于类的代理包装,还有很多其他方式,比如动态代理,在运行时通过反射机制进行代理,当然随着字节码框架的完善,很多代理的实现方式更加强大,甚至不用定义代理接口,不用改变类的继承关系。

这些是我的理解,看看对你有没帮助
smillton1

悄悄话
发表文章: 3
注册时间: 2007年06月08日 12:19
re:proxy和factory 2007年06月12日 09:03 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
似乎有些理解了,感觉设计模式中总的思想都有共通的地方,只是有些很细微的差别来达到特有的一些需求。谢谢楼上2位大大的介绍,看来我还需要结合实践,细细体会一下啊。
这个主题有 4 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam