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