工厂与原型 - 何时使用?

OhD*_*ear 6 design-patterns factory

Factory和Prototype都有助于创建对象.在设计新应用程序时:

  1. 你什么时候使用工厂模式而不是原型模式?
  2. 你什么时候使用Prototype Pattern而不是Factory Pattern?

我很困惑哪一个用在哪里.

我知道它可能是非常具体的问题但是有没有一般的指导方针?

思考?

Pie*_*aud 9

我假设您正在谈论抽象工厂设计模式(不应该与工厂方法混淆,后者是另一种创建设计模式).

两者之间的差异并不太明显,因为它们可以重叠并以互补的方式使用.由于原型创建了自身的克隆,包括其所有属性,它通常只由一个抽象工厂创建一次,然后克隆每个必需的对象(不需要再次填充其字段).

因此,Prototype避免了不必要的"新"调用,因为对象被克隆而不是被创建.然而,在大多数现代OOP语言中,我不会说它是如此重要.我的两分钱:如果你没有真正看到差异,那就继续使用你习惯实施的那个(也就是抽象工厂).


the*_*rld 6

在我看来,虽然两者都是创建模式,但工厂模式和原型模式在不同的上下文中使用。

工厂模式用于在对象之间引入松散耦合,因为工厂将处理对客户端隐藏它的所有实例化逻辑。

另一方面,当创建对象的成本很大并且可以复制现有实例而不是创建新实例时,则使用原型模式。


And*_*sen 5

原型最好被认为是优化工厂(复制而不是创建)或执行依赖项注入(为特定实现/配置配置工厂)的一种方法。


Anu*_*lok 5

嗯,我想的是,

在工厂方法中,我们返回我们感兴趣的类型的新实例,如原型中相关子类使用克隆方法返回其自身的实例

更具体 工厂方法的创建是通过继承进行的,而原型创建是通过委托进行的,即多态性进行的。

在我看来,

每当您认为需要类的重复状态或具有预设状态的对象的克隆时,您就需要使用原型。