我知道有很多关于这两种模式之间差异的帖子,但有一些我找不到的东西.
从我一直在阅读的内容中,我看到工厂方法模式允许您定义如何创建单个具体产品,但是从客户端隐藏实现,因为他们将看到通用产品.我的第一个问题是抽象工厂.它的作用是允许您创建具体对象的族(可能取决于您使用的特定工厂)而不仅仅是单个具体对象?抽象工厂是否只返回一个非常大的对象或许多对象,具体取决于您调用的方法?
我的最后两个问题是关于我在很多地方看到过的单一引言,我无法完全理解:
两者之间的一个区别是,使用抽象工厂模式,类通过组合将对象实例化的责任委托给另一个对象,而工厂方法模式使用继承并依赖子类来处理所需的对象实例化.
我的理解是工厂方法模式有一个Creator接口,它将使ConcreteCreator负责知道要实例化的ConcreteProduct.这是通过使用继承来处理对象实例化的意思吗?
现在关于那个引用,抽象工厂模式究竟是如何通过合成将对象实例化的责任委托给另一个对象?这是什么意思?看起来抽象工厂模式也使用继承来完成构建过程,但是我仍然在学习这些模式.
任何帮助,尤其是最后一个问题,将不胜感激.
design-patterns factory-method factory-pattern abstract-factory
我正在学习不同的设计模式,我有一种强烈的感觉,我错过了理解这种特殊模式的必要部分(或部分).
在我查看的所有网站和GoF书中,我都看到了克隆方法.根据我的理解,当我们需要该对象的不同版本时,我们可以克隆某种类型的对象,但我们不希望使用"new"命令手动创建每个对象(如在Java中).这可以隐藏其具体实现.因此,当我们克隆时,我们可以稍微调整克隆并使其成为我们需要的,而不必知道如何最难创建该对象.这是我的想法吗?
我还被告知,这可以减少子类化,并随后减少您需要进行的类的数量.我不太明白这一部分.有人能帮助我掌握这个吗?
我的最后一个问题是抽象工厂(甚至工厂方法)模式.这些工厂模式和原型模式感觉就像他们试图在创建新对象时隐藏具体实现.什么时候选择其中一个是个好主意?
谢谢你们!
我有一些关于适配器模式的问题.我知道类适配器继承自adaptee,而对象适配器将adaptee作为对象而不是继承自它.
您何时在对象适配器上使用类适配器,反之亦然?另外,使用类适配器和对象适配器的权衡取舍有哪些权衡?