首页 新闻 会员 周边 捐助

工厂模式和抽象工厂模式的本质区别是什么?

0
悬赏园豆:50 [已解决问题] 解决于 2008-08-21 01:01
<P>我看了headfirst 设计模式 这本书</P> <P>里面对工厂模式很抽象工厂模式的描述大概是这样的</P> <P>这2个都是用来创建对象的(表示creater 和product之间的关系)</P> <P>不过2个范围有区别</P> <P>工厂只不过是对一个产品的封装</P> <P>而抽象工厂是对一系列相关产品的封装</P> <P>2个的优点是:将实体对象和和动作解耦</P> <P>里面提到的有句话我很在意</P> <P>抽象工厂的具体工厂经常实现工厂方法来创建他的产品。。。</P> <P>他提到是经常 所以我想一定也有特别的情况</P> <P>想问下那个能举出一个例子说明用了抽象工厂却不通过工厂方法来实现的????</P> <P>让我能够更清晰的了解这2个模式之间的更本区别</P>
小眼睛老鼠的主页 小眼睛老鼠 | 老鸟四级 | 园豆:2731
提问于:2008-08-19 22:13
< >
分享
最佳答案
4
可以这么去理解,“抽象工厂模式”这个称呼中的“抽象”是一个动词,即对工厂方法模式进行了抽象,就变成了抽象工厂模式,这么理解后,就不难看出它们的区别: 工厂方法模式:每个抽象产品派生多个具体产品类,每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建; 抽象工厂模式:每个抽象产品派生多个具体产品类,每个抽象工厂派生多个具体工厂类,每个具体工厂负责多个(一系列)具体产品的实例创建。 你在下面所说的一句话“抽象工厂的具体工厂经常实现工厂方法来创建他的产品”,这句话里面的“工厂方法”仅仅是对一类方法的称呼,此处的“工厂方法”与“工厂方法模式”无关,即便在简单工厂模式中,也会有工厂方法这一说。
TerryLee | 老鸟四级 |园豆:3300 | 2008-08-20 00:42
其他回答(3)
1
工厂方法: 比如你的工厂叫做“香烟工厂”,那么可以有“七匹狼工厂”“中华工厂”等,但是,这个工厂只生厂一种商品:香烟; 抽象工厂: 你的工厂是综合型的,是生产“一系列”产品,而不是“一个”,比如:生产“香烟”,还有“啤酒”等。然后它也可以有派生出来的具体的工厂,但这些工厂都是生产这一系列产品,只是可能因为地域不一样,为了适应当地人口味,味道也不太一样
水言木 | 园豆:586 (小虾三级) | 2008-08-19 22:39
3
区别在于,抽象工厂里一个工厂要生产多个产品,当抽象工厂生产的产品只有一个时,就叫工厂模式了
Gray Zhang | 园豆:17610 (专家六级) | 2008-08-19 23:11

顶,茅塞顿开。抽象工厂是一系列相关对象的创建问题。如果产品只有一个时,就是工厂方法了

支持(0) 反对(0) stevey | 园豆:335 (菜鸟二级) | 2012-07-04 10:30

这个说法很新鲜啊

支持(0) 反对(0) hailong | 园豆:70 (初学一级) | 2012-11-05 19:26
1
工厂:是一个创建型模式 抽像工厂:是一组工厂的创建模式,是对工厂的一种抽象。它要创建的是一组工厂
程序员老李 | 园豆:790 (小虾三级) | 2008-08-20 09:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册