关于设计模式

看了半天书,似懂非懂的
想请教一下,abstract factory,factory mothod,builder之间到底有什么区别??
在哪些情况下可以相互替代?
在哪些情况下不可以??
谢谢
[121 byte] By [zhengqingshan-正青山] at [2008-5-28]
# 1
abstract factory适合于一次生产一批对象,抽象工厂通常是用factory method或prototype实现的。
factory method这是一个典型的多态性应用,在基类中规定创建对象的接口,子类中的方法来控制实际生产的对象的类型。
builder侧重于生产复杂对象,提供了逐步构造复杂对象的控制方法
这三者其实没有本质的区别,GOF推荐先尝试用factory method实现创建型的模式,但是factory method的灵活度比其他的方法低,如果你发现需要更高的灵活度,可以尝试使用别的方法。
mach-照虎画猫 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 2
谢谢上面的大虾
我的感觉是:abstract factory就象一个二维表,行代表每一种抽象的product,列代表每一种系列的产品,而builder注重于列之间的关系,它不需要把其中的每一种东西抽象成一个abstract product,而factory是当行数=1时的abstract factory的情况,他着重于有两个平行的类集actor 和ipml ,每一个actor只产生一个impl
所以builder和factory是abstract factory的特例
不知到小弟如上的理解是否正确,请大家指教
zhengqingshan-正青山 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 3
怎么说呢,你的理解我倒是不太理解了:)
abstract factory是用来成批生产abstract product的对象,可以靠factory method的方法实现生产其中某个concrete product,也可以用prototype的方法来实现。
builder不一样,builder用于生产单个(也可以是多个)复杂对象,但它的侧重点不是生产多个对象的能力,而是能够有控制地逐步生产复杂对象的能力,builder也可以靠factory method的方法实现。
builder和factory不是abstract factory的特例,而是它的使用者。
mach-照虎画猫 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 4
abstract factory是多种经营;
factory mothod是专卖;
builder是组装厂。

lhylhy-梁海鹰 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 5
呵呵:)
mach-照虎画猫 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 6
似乎有些明白了
不知哪里有着方面的例子?
迷宫的那个看的不是很明白
先谢了
zhengqingshan-正青山 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 7
留意...
bluesx-独上西楼 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 8
其实那个迷宫的例子就很明白了,在我们的应用中有很多用abstract factory的地方,builder很少用。不过我们的用法在缺少像书上那样的说明的情况下,更不好懂:(
mach-照虎画猫 at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 9
其实是观念的问题.
你想想:组合类包括很多子类,组合有它的策略,方法。将这些方法,策略构造为一个制造类,这个制造类的复杂程度,决定了它是builder,factory method,或者prototype。大可不必拘束于名词解释。知道这种思想,方法,能运用既可。
rampig at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...
# 10
觉得设计模式难懂的朋友还是没有精通象C++这样的面向对象的语言啊.
termite-★★★★★ at 2007-10-30 > top of Msdn China Tech,软件工程/管理,开发方法...