工厂和抽象工厂模式之间的基本区别是什么?
我知道有很多关于这两种模式之间差异的帖子,但有一些我找不到的东西.
从我一直在阅读的内容中,我看到工厂方法模式允许您定义如何创建单个具体产品,但是从客户端隐藏实现,因为他们将看到通用产品.我的第一个问题是抽象工厂.它的作用是允许您创建具体对象的族(可能取决于您使用的特定工厂)而不仅仅是单个具体对象?抽象工厂是否只返回一个非常大的对象或许多对象,具体取决于您调用的方法?
我的最后两个问题是关于我在很多地方看到过的单一引言,我无法完全理解:
两者之间的一个区别是,使用抽象工厂模式,类通过组合将对象实例化的责任委托给另一个对象,而工厂方法模式使用继承并依赖子类来处理所需的对象实例化.
我的理解是工厂方法模式有一个Creator接口,它将使ConcreteCreator负责知道要实例化的ConcreteProduct.这是通过使用继承来处理对象实例化的意思吗?
现在关于那个引用,抽象工厂模式究竟是如何通过合成将对象实例化的责任委托给另一个对象?这是什么意思?看起来抽象工厂模式也使用继承来完成构建过程,但是我仍然在学习这些模式.
任何帮助,尤其是最后一个问题,将不胜感激.
design-patterns factory-method factory-pattern abstract-factory
注意:问题在帖子的末尾.
我已经阅读了有关Abstract Factory vs Factory Method的其他stackoverflow线程.我理解每个模式的意图.但是,我不清楚这个定义.
Factory方法定义了一个用于创建对象的接口,但是让子类决定实例化哪些接口.工厂方法允许类将实例化延迟到子类.
相比之下,抽象工厂提供了一个接口,用于创建相关或从属对象的族,而无需指定其具体类.
该抽象工厂看起来非常相似的工厂方法.我已经绘制了一些UML类来说明我的观点.
注意:
工厂方法:
抽象工厂(仅1名成员):
抽象工厂(更多成员):
问题:
language-agnostic uml design-patterns factory-method abstract-factory
任何人都可以解释工厂和战略模式之间的区别吗?
对我来说,除了额外的工厂类(在工厂模式中创建产品对象)之外,两者看起来都相同
java design-patterns strategy-pattern factory-pattern abstract-factory
大多数定义说:
抽象工厂提供了一个接口,用于创建相关对象的族,而无需指定其具体类
抽象工厂模式的用途是什么,因为我们可以通过创建具体类本身的对象来实现任务.为什么我们有一个工厂方法来创建Concrete类的对象?
请提供我必须实现abstractFactory模式的任何现实生活示例?
我对这三个术语感到很困惑.
我的理解是:
在工厂模式中,没有混凝土工厂.工厂根据参数构建新对象.
在抽象工厂模式中,有多个混凝土工厂.客户必须明确地创建不同的具体工厂.
是对的吗?
还有什么区别?
此外,什么是工厂方法模式?它与工厂模式相同吗?
乍一看,服务定位器模式与我的抽象工厂模式看起来相同.它们似乎都具有相同的用途(您查询它们以接收抽象服务的实例),并且当我阅读有关依赖注入时它们都被提及.
但是,我已经看到服务定位器模式被描述为一个糟糕的想法,但在至少一个主要的依赖注入框架中看到了对抽象工厂模式的直接支持.
如果它们不相同,有什么区别?
这似乎是一个问题似乎是一个骗局,但请耐心等待 - 我保证我已经阅读了相关的帖子(以及GOF书).
在我读完所有内容之后,我仍然没有清楚何时使用抽象工厂,工厂方法或构建器.我相信它会在我看到一个问题的简单例子之后陷入困境,这个问题最好由建筑商来处理,而使用抽象工厂显然是愚蠢的.
你能提供一个简单的例子,你可以清楚地使用一种模式而不是其他模式吗?
我理解,如果这个例子过于简单,可能归结为意见问题,但我希望如果有人可以,那个人就是这样.
谢谢.
language-agnostic design-patterns builder factory-method abstract-factory
我不是在问采访的观点.我想知道在struts框架等项目中实现的实时场景.
abstract-factory ×10
design-patterns ×10
factory ×2
java ×2
architecture ×1
builder ×1
c#-4.0 ×1
facade ×1
uml ×1