相关疑难解决方法(0)

设计模式:抽象工厂与工厂方法

注意:问题在帖子的末尾.

我已经阅读了有关Abstract Factory vs Factory Method的其他stackoverflow线程.我理解每个模式的意图.但是,我不清楚这个定义.

Factory方法定义了一个用于创建对象的接口,但是让子类决定实例化哪些接口.工厂方法允许类将实例化延迟到子类.

相比之下,抽象工厂提供了一个接口,用于创建相关或从属对象的族,而无需指定其具体类.

- John Feminella

抽象工厂看起来非常相似的工厂方法.我已经绘制了一些UML类来说明我的观点.

注意:

  • 该图来自www.yuml.com,因此它们并不完美.但它是免费服务:).
  • 图表可能不完美.我还在学习GoF设计模式.

工厂方法:

工厂方法

抽象工厂(仅1名成员):

抽象工厂(仅1名成员)

抽象工厂(更多成员):

替代文字

问题:

  1. 如果抽象工厂只有一个创建者和一个产品,它仍然是抽象工厂模式吗?(创建家庭的界面)
  2. 可以从接口创建Factory Method具体创建者还是必须来自类?(类推迟实例化到子类)
  3. 如果抽象工厂只能有一个创建者和一个产品,那么抽象工厂工厂方法之间的唯一区别是前者的创建者是一个接口而后者的创建者是一个类?

language-agnostic uml design-patterns factory-method abstract-factory

141
推荐指数
3
解决办法
6万
查看次数

关于原型模式的问题

我正在学习不同的设计模式,我有一种强烈的感觉,我错过了理解这种特殊模式的必要部分(或部分).

在我查看的所有网站和GoF书中,我都看到了克隆方法.根据我的理解,当我们需要该对象的不同版本时,我们可以克隆某种类型的对象,但我们不希望使用"new"命令手动创建每个对象(如在Java中).这可以隐藏其具体实现.因此,当我们克隆时,我们可以稍微调整克隆并使其成为我们需要的,而不必知道如何最难创建该对象.这是我的想法吗?

我还被告知,这可以减少子类化,并随后减少您需要进行的类的数量.我不太明白这一部分.有人能帮助我掌握这个吗?

我的最后一个问题是抽象工厂(甚至工厂方法)模式.这些工厂模式和原型模式感觉就像他们试图在创建新对象时隐藏具体实现.什么时候选择其中一个是个好主意?

谢谢你们!

design-patterns prototype-pattern

40
推荐指数
3
解决办法
1万
查看次数