首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >工厂方法模式的继承与抽象工厂模式中的组合

工厂方法模式的继承与抽象工厂模式中的组合
EN

Stack Overflow用户
提问于 2017-07-24 15:05:59
回答 1查看 1.1K关注 0票数 1

我正在浏览工厂方法模式和抽象工厂方法模式的wiki页面。

从Head First设计模式我得到了这个

工厂方法模式使用继承,抽象工厂模式使用组合。抽象工厂模式也与Factory方法模式一样,它使客户端与具体类型分离,但方式不同。

在分析了wiki的例子之后,我实际上找不到这些例子中的作文。这两种模式都使用继承。

工厂方法模式

抽象工厂模式

这是我的问题。

  1. 与抽象工厂方法模式不同,工厂方法模式总是只有一个抽象产品继承树吗?
  2. 在哪里可以以某种方式使用或编程构图?如果只有主方法的客户端,那么Factory方法模式也使用组合。一个代码片段示例将清除这个概念。
  3. 我对样本草图中这些模式的解释正确吗?
EN

回答 1

Stack Overflow用户

发布于 2017-07-25 11:19:33

是的,正如"Fuhrmanator“所指出的,它看起来是重复的。上述问题的答案对这两种模式提供了很好的解释。简而言之,GOF设计模式目录谈到了三种模式,其中包含“工厂”一词。这三种都是造物模式。大多数人在使用术语“工厂模式”时使用静态工厂实现。

静态工厂是一种方便的方法,可以用一种方法来包围混凝土类的创建

代码语言:javascript
运行
复制
AbstractProduct getProduct(key){
    if (key == ...) return new ConcreteProduct1();
    ... so on.
} 

工厂方法是一个单一的抽象方法,作为一个钩子,以延迟具体产品的实例化。当我们在编写编写业务逻辑的框架时,这是非常有用的,但我们不想假设客户端开发人员稍后将编写的具体类(此逻辑适用于这些类)。(此处不重复UML模式图)

工厂模式是工厂方法中比较普遍的一种情况,我们需要限制可以实例化和使用的产品类型,但是完全的风味变化(在整个应用生命周期中,我们不会在味道之间不停地切换)。

例如,抽象的ShapeFactory可以提供创建3种形状的接口,如圆形、方形和矩形,而作为混凝土工厂,FilledShapeFactory和HollowShapeFactory将被绑定提供这三种形状的填充和中空版本(混凝土工厂不能自由决定新形状或丢弃任何形状)。

当各种形状(产品)发生变化时,不能使用此模式,因为它会强制更改界面并影响客户端。

口味变化的原因可能是由于父环境、操作系统或任何其他严重影响参数。

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

https://stackoverflow.com/questions/45284039

复制
相关文章

相似问题

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