Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OOP中的工厂是什么_Oop_Design Patterns_Factory - Fatal编程技术网

OOP中的工厂是什么

OOP中的工厂是什么,oop,design-patterns,factory,Oop,Design Patterns,Factory,我对“工厂相关”设计模式及其OOP实现的理解一直非常简单 “工厂方法”是类中的一种方法,该类将接口(或抽象类)作为返回类型,并基于某些内部逻辑构造实现该接口的对象 “工厂”是一个只包含工厂方法的类 “抽象工厂”是只包含工厂方法的接口(或抽象类) 但我最近偶然发现Wikipeda关于(,)主题的文章,这让我有些困惑,尤其是关于OOP中的“工厂”是什么 以下是几句话: 返回“新”对象的子例程可以称为“工厂”,如在工厂方法或工厂函数中 工厂用于各种设计模式 “抽象工厂模式”是一种构建工厂集合的方法

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

  • “工厂方法”是类中的一种方法,该类将接口(或抽象类)作为返回类型,并基于某些内部逻辑构造实现该接口的对象
  • “工厂”是一个只包含工厂方法的类
  • “抽象工厂”是只包含工厂方法的接口(或抽象类)
但我最近偶然发现Wikipeda关于(,)主题的文章,这让我有些困惑,尤其是关于OOP中的“工厂”是什么

以下是几句话:

  • 返回“新”对象的子例程可以称为“工厂”,如在工厂方法或工厂函数中
  • 工厂用于各种设计模式
  • “抽象工厂模式”是一种构建工厂集合的方法
  • 工厂是代码中一个具体类的位置,对象是在该位置构造的
  • 这引起了一些问题:

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

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

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

    (4) 什么

    有人能澄清这是什么意思吗?我对工厂的最初理解是错误的吗?

    看看下面这句话:

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

    因此,具体回答您的问题:

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

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

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


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

    这正是我无法理解的。首先它说“工厂是一个对象”,然后说“工厂是一个函数或方法”?它怎么可能是一个对象和一个方法?@AndreBorges:-当你在基于类的编程中使用它时,它是类构造函数的抽象,而在基于原型的编程中,它是原型对象的抽象。工厂不是一个函数或方法。可能是@jaco0646的重复,不,你提到的问题是关于“抽象工厂”和“工厂方法”,而这个问题是关于“工厂”。