工厂设计模式VS构造函数

时间:2017-07-27 13:32:23

标签: oop design-patterns constructor factory factory-pattern

我有一个包含方法和复杂数据结构的Product类。我将有8种类型的产品,只有数据结构的内容不同,没有别的。在我的应用程序中,我将需要创建一种类型的8种类型的产品,一次,并且存在的产品类型不会在运行时更改。

最好的方法是什么?为什么?

A)Class Product有8个子类。这些子类中的每一个仅定义构造函数。在每个构造函数中,为该类型的产品正确创建数据结构。

B)Factory类有8个子类。这些子类中的每一个都是8种产品中的每一种的具体工厂。类产品没有子类。每个具体工厂通过创建适当的数据结构并将其作为参数传递给类Product的构造函数来创建特定类型的产品。

我一直在审查工厂设计模式的优点,对于这个具体案例,我看不出B超过A的任何优势。我错过了什么?

3 个答案:

答案 0 :(得分:0)

我会选择A的变体,加上工厂类。工厂用于创建具有在接口类中定义的方法的类,这样工厂创建的对象的使用者不知道他们正在处理什么类型的对象,而只知道接口。工厂本身知道要创建什么类型的对象。

如果某个类型的产品在给定时间内要创建某种类型的逻辑,请为8个实现IP产品接口的产品实施工厂,并实现在工厂内创建的产品类型的逻辑。

答案 1 :(得分:0)

我相信工厂设计模式,您可以从单个工厂创建不同子类的对象。请参阅以下示例 -

enter image description here

据我所知,使用子类方法和工厂设计模式对于上述场景来说是更好的选择。

答案 2 :(得分:0)

您已经提到过 - 我将有8种类型的产品,这些产品的不同之处仅在于数据结构的内容,而不是其他...... 。这意味着状态和方法具有不同的内容。基于此,我觉得这清楚地表明这些不是子类,而是同一类的实例。我认为代码只包含一个产品类和8个实例。工厂绝对不需要它将是不必要的代码。