楼主: yining

[精华] [专题讨论]设计模式及应用

[复制链接]
论坛徽章:
70
三菱
日期:2014-01-17 10:00:292014年世界杯参赛球队: 智利
日期:2014-06-05 11:54:32马上加薪
日期:2014-04-07 17:03:21马上有钱
日期:2014-02-25 21:39:36马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:11
11#
发表于 2003-6-8 01:03 | 只看该作者
3。抽象工厂

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
12#
发表于 2003-6-11 17:48 | 只看该作者

提个建议

这么好的主题应该深入讨论下去,建议从设计模式在实际项目中的应用开始讨论,大家一起分析设计的设计对应用的影响。

使用道具 举报

回复
论坛徽章:
10
生肖徽章2007版:龙
日期:2008-05-06 11:21:29ITPUB元老
日期:2008-07-11 12:32:43生肖徽章2007版:猪
日期:2008-11-20 09:36:58IT宝贝
日期:2009-03-02 16:48:51
13#
发表于 2003-6-14 11:51 | 只看该作者
最初由 gangyi 发布
[B]我原来的理解是有一个类的系列(Family)的情况的就是Abstract Factory,典型的例如DOM;只是由工厂类提供返回对象的接口,里面隐藏这个对象的实现类的,就是Factory。 总觉得这样分有点不准确。 [/B]


我觉得就是这样,工厂方法是创建一个产品。而抽象工厂是创建多个产品(一系列产品)。每一个产品有不同的种类。最通常的做法是抽象工厂,为每一个产品定义一个工厂方法。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:332011新春纪念徽章
日期:2011-02-18 11:43:33
14#
发表于 2003-6-18 17:52 | 只看该作者
我的理解是这样:
工厂方法是可以高扩展性的创建产品。
虽然抽象工厂的最终目的也是创建产品,但是抽象工厂首先还是先要创建具体的工厂,然后通过具体工厂再来创建产品,这样就更加灵活了。
我觉得讨论两者间的区别首先要注意抽象工厂比工厂方法多了一个中间的具体工厂角色。

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2003-6-19 12:37 | 只看该作者
关于abstract Factory 的好处和不足:
我的理解是:
好处:
如果你要增加一组产品,那么你只需增加这组产品的类和增加一个相应工厂就可,不必修改其他的代码和逻辑,这样遵守开-闭原则。
缺点:
如果不是增加一组产品,而是在每组产品中正加一个单品,那么就要在每个工厂中增加工厂方法生成该种单品,这样就违背了开-闭原则。

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2003-6-19 23:36 | 只看该作者
我的理解:
--------------------------------------------------------
抽象工厂(Abstract Factory)给出了一个产品定义, 说明了这个工厂出品的产品到底是什么东西. 它一般有些什么功能. 不同的子厂可能有不同的实现方法.

工厂方法(Factory Method) 的基础类则是说明: 我这个方法将创建一个产品 (它有一定的定义和用处), 可是这个产品的细节我不知道. 而具体子类应该清楚它的细节, 所以有针对性的给出一个产品.
---------------------------------------------------------
这两个东西常常混在一块儿用. 比如说抽象工厂的产品的某个功能恰好就是一个工厂方法. 而往往工厂方法生产出的产品就是一个抽象工厂下的产品.

使用道具 举报

回复
论坛徽章:
2
会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
17#
发表于 2003-6-30 16:55 | 只看该作者
Abstract Factory:
Varous methods to make various objects various ways.   

Builder:
Make and return one object various ways.   

Factory Method:
Methods to make and return components of one object various ways.   

Prototype:
Make new objects by cloning the objects which you set as prototypes.   
Singleton:
A class distributes the only instance of itself.

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2003-7-28 16:22 | 只看该作者
Abstract Factory 是为了创建一系列有相互依赖关系的接口(接口与接口之间的关系紧密)
Facotry Method 是一个创建对象的接口,具体的实例化由子类决定

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2003-7-28 17:51 | 只看该作者
非常好的贴子,我要好好的关注一翻。

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2003-7-29 11:36 | 只看该作者
me觉得既然模式是特定环境下的特定解决方法,那么讨论模式之间的区别就一定要从环境(context)入手

看一下GoF对适用性的描述
abstract factory:
• 一个系统要独立于它的产品的创建、组合和表示时。
• 一个系统要由多个产品系列中的一个来配置时。
• 当你要强调一系列相关的产品对象的设计以便进行联合使用时。
• 当你提供一个产品类库,而只想显示它们的接口而不是实现时。
factory method:
• 当一个类不知道它所必须创建的对象的类的时候。
• 当一个类希望由它的子类来指定它所创建的对象的时候。
• 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

GoF的书里还有一段话不知道大家注意了没有,在谈到factory method的相关模式时:
Abstract Factory经常用Factory Method来实现。……Factory Method通常在Template Methods中被调用。……Prototypes不需要创建Creator子类。但是,它们通常要求一个针对Product类的Initialize操作。Creator使用Initialize来初始化对象。而Factory Method不需要这样的操作。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表