关于抽象工厂的一个问题?
bang的抽象工厂中指出如果有2种产品,并且每种产品又有不同的实现,可以使用抽象工厂模式,但按bang的介绍,如果后来再增加一种新的产品,那所有的类是不是都要修改。
一开始只在后花园中种蔬菜类的时候可以用简单工厂模式,由工厂负责生成具体的蔬菜类,
但是如果后花园要引进水果类的时候简单模式就行不通了,因此需要使用工厂方法模式,将产品类族分开。
但是如果后花园的规模继续扩大到地域范围的分割时,比如说一个在北京,一个在上海的时候,工厂方法模式就不够了,因为对两个后花园来说,每个后花园的植物是要被种在一起的,并且两个后花园用工厂方法模式是无法体现其区别的。
我个人认为抽象工厂和工厂方法的最大区别应该是抽象工厂提取了各个工厂方法的共性,并且能够确保工厂方法中产生的产品类能够在一起工作。
而且我觉得向上面所说的加入一个产品c,这应该是去修改抽象产品类,而与工厂无关。
呵呵,不知道我的理解对不对,但我还是建议大家先去看看阎宏的文章,联接如下: