【发布时间】:2023-04-06 20:18:01
【问题描述】:
我现在正在学习factory method 设计模式,在此之前我学习了simple factory 模式。
我认为simple factory 很有用,因为它将if/else 控制流转移到工厂,因此可以保留产品的纯度。然后学了factory method模式,觉得很复杂很漂亮。
然而,我突然想到factory method模式中已经没有if/else控制流,客户知道它将使用哪个产品,客户选择相应的工厂。
例如
Factory factory = new SpecificFactory;
Product product = new SpecificProduct;
好吧,既然客户知道他们想要使用哪个产品(没有if/else 控制),为什么只是简单的新SpecificProduct 为什么需要额外的工厂?
我搜索了它,但没有找到令人满意的答案。
其实我想问的是Why do we need Abstract factory design pattern?,除了这个是工厂方法而不是抽象工厂。
【问题讨论】:
-
仍然,您希望您的产品初始化只封装在一个地方。初始化可能不仅仅是调用 SpecificProduct 类的构造函数。
-
在您需要它之前,您不需要它。在你遇到问题之前,没有任何答案是有意义的。然后你会发现你的解决方案实际上是一种设计模式。
标签: design-patterns factory-pattern