首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >工厂方法模式遵循模板模式,而抽象工厂模式不遵循吗?

工厂方法模式遵循模板模式,而抽象工厂模式不遵循吗?
EN

Stack Overflow用户
提问于 2019-06-07 03:13:14
回答 4查看 152关注 0票数 1

在Gamma等人的设计模式中,“工厂方法”具有以下结构:

“抽象工厂”的结构如下:

为什么Creator有一个方法AnOperation()来调用工厂方法模式中的FactoryMethod(),而AbstractFactory没有一个方法来调用抽象工厂模式中的CreateProductA()CreateProductB()

Creator的方法AnOperation()调用FactoryMethod()是否遵循模板模式,其结构为

EN

回答 4

Stack Overflow用户

发布于 2019-06-07 07:09:05

工厂是专用于创建已定义类型的实例的类。这是工厂的唯一目的。另一方面,工厂方法可以存在于任何非工厂类型上。工厂方法图试图通过向类添加任意方法(在UML中,方法称为操作)来表达这一点,以显示其主要目的不是创建其他类型的实例。

当您将图表解释为AnOperation()正在调用FactoryMethod()时,您就错了。该图说明Creator是一种抽象类型,它有一个名为FactoryMethod的抽象方法和一个名为AnOperation的具体(或非抽象)方法。ConcreteCreatorCreator派生而来,继承了AnOperatio() (由于它不是抽象的,所以在UML类规范中没有重复)和抽象的FactoryMethod()AnOperatio()FactoryMethod()是两种独立的方法。‘

票数 1
EN

Stack Overflow用户

发布于 2019-06-07 07:14:09

它很简单:给定“一阶工厂”服务器的创建目的(基本上是一堆正确完成的new语句),“抽象工厂”-或“高阶工厂”-是创建的对象本身时的一个特例。另一家工厂。它有点类似于列表列表。

附注:你也可以有一个工厂,它创建一个工厂,然后再创建一个工厂。尽管它完全符合“高阶工厂”的定义,但它在大多数现实世界中都没有用处。

票数 1
EN

Stack Overflow用户

发布于 2019-06-07 08:45:27

工厂方法和抽象工厂模式都不是模板方法设计模式的应用。尽管它们的解决方案模板的UML类图看起来很相似,但它们实际上帮助实现了不同的目标。

这两个工厂模式与允许子类自定义如何创建特定类型的对象有关。有关不同工厂模式之间的差异的讨论,请参阅this post

模板方法设计模式与对象的创建无关,而是在算法中引入变化点。

话虽如此,这三种模式的共同点是它们将一些行为推迟到子类。有关您的问题的另一种说法,请参阅this post

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56483736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档