【问题标题】:What is a Factory in OOP什么是 OOP 中的工厂
【发布时间】:2016-06-16 09:10:23
【问题描述】:

我对“工厂相关”设计模式及其 OOP 实现的理解一直很简单。

  • “工厂方法”是类中的一种方法,它具有接口(或抽象类)作为返回类型,并根据一些内部逻辑构造实现该接口的对象。
  • “Factory”是一个只包含工厂方法的类
  • “抽象工厂”是只包含工厂方法的接口(或抽象类)

但我最近偶然发现了有关该主题的 Wikipeda 文章(FactoryAbstract factory),这让我有些困惑,尤其是关于 OOP 中的“工厂” 是什么。

这里有几个引用:

  1. 返回“新”对象的子例程可以称为“工厂”,如工厂方法或工厂函数。
  2. 工厂用于各种设计模式
  3. “抽象工厂模式”是一种构建工厂集合的方法。
  4. 工厂是代码中构建对象的具体类的位置

这引起了一些问题:

(1)&(2) 这是否意味着工厂不是类或对象,而是一段逻辑?

(2) “工厂”本身不是一种模式吗?

(3) 这里的“收藏”是什么意思?这只是一种说法“你可以有几个实现相同接口的工厂(这是一个抽象工厂)”?

(4) 什么???

谁能解释一下这是什么意思?我对工厂的初步理解是错误的吗?

【问题讨论】:

标签: oop design-patterns factory


【解决方案1】:

看看这个wiki,上面写着:

在面向对象编程 (OOP) 中,工厂是一个对象 创建其他对象——正式的工厂是一个函数或方法 从某些返回不同原型或类的对象 方法调用,假定为“新”。[a] 更广泛地说,a 返回“新”对象的子程序可以称为 “工厂”,如工厂方法或工厂函数。这是一个基本 OOP 中的概念,并构成了许多相关软件的基础 设计模式。

所以专门回答你的问题:

(1)&(2) 这是否意味着工厂不是类或对象,而是一段逻辑?

不,这意味着您可以使用对象(工厂)创建其他对象。

(2) “工厂”本身不是一种模式吗?

有不同的设计模式,工厂模式就是其中之一。因此,当您使用工厂创建对象时,创建其他对象的模式就是“工厂模式”

【讨论】:

  • 这正是我无法理解的。首先它说“工厂是一个对象”,然后是“工厂是一个函数或方法”?它怎么可能是一个对象和一个方法?
  • @AndreBorges:- 当您在基于类的编程中使用它时,它是类的构造函数的抽象,而在基于原型的编程中,它是原型对象的抽象。工厂不是函数或方法。
猜你喜欢
  • 2018-08-13
  • 2013-05-11
  • 1970-01-01
  • 2011-01-29
  • 2011-04-16
  • 2011-09-18
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多