问题标签 [factory-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8894 浏览

objective-c - 在 Objective-C 上下文中使用工厂方法的目的是什么?

在 Objective-C 上下文中使用工厂方法的目的是什么?

我对在objective-c中使用工厂方法有点困惑?这样做有什么用处?

在objective-c中使用工厂方法的例子是什么?

有点困惑。任何解释都会有所帮助!

0 投票
3 回答
466 浏览

scala - Scala 工厂模式返回不可用的抽象类型

请让我知道如何使以下代码按预期工作。问题是 Scala 编译器不明白我的工厂正在返回一个具体的类,所以我的对象以后不能使用。TypeTags 或类型参数有帮助吗?还是我需要以其他方式重构代码?我(显然)是 Scala 的新手。

最后一行代码失败,因为编译器认为d是 a Animal,而不是 a Dog

0 投票
2 回答
1165 浏览

java - 工厂方法与抽象工厂

我已阅读有关子类创建所需对象的工厂方法和抽象工厂具有具体类创建所需对象的方法

工厂方法

使用工厂

使用工厂方法和抽象工厂实现的相同用例。为什么应该有 FactoryMethod 而不是使用 Abstract Factory 或 Utility Factory(例如 Chicago Factory/NewYorkFactory)。在哪种情况下工厂方法对抽象方法有用?

0 投票
1 回答
3484 浏览

constructor - Dart 工厂(构造函数)与静态方法;例如,为什么 int.parse() 不是工厂构造函数?

Dart 风格指南建议使用构造函数而不是静态方法来创建实例,因为“ Dart中的命名构造函数和工厂构造函数为您提供了其他语言中静态方法的所有灵活性,同时仍然允许调用站点看起来像常规构造函数调用”。

int.parse()那么,声明并double.parse()作为静态方法而不是工厂构造函数是否有技术原因?

更一般地说,在 Dart 中选择编写工厂构造函数而不是静态(工厂)方法的准则是什么?

0 投票
1 回答
3908 浏览

factory-method - 生成器与工厂方法模式

我正在阅读有关 Builder 模式的内容,并且像往常一样对 Factory 模式感到困惑。

我看过一篇很好的文章,它展示了抽象工厂模式和构建器模式之间的区别。

http://champika-nirosh.blogspot.in/2008/04/what-is-difference-between-abstract.html

但我的困惑是,除了类似于抽象工厂的 Builder 模式,我觉得它类似于工厂方法模式。不确定我的理解是否正确。但是在工厂方法中,我们也使用单独的工厂(具体工厂中的方法)来创建一个特定的对象(不是产品系列)。在那种情况下,Builder 与工厂方法模式有何不同。我知道 Builder 需要更多的步骤来创建对象,除此之外,我们需要使用一个而不是另一个的任何特定场景吗?请指导我。

谢谢。

0 投票
1 回答
44 浏览

oop - 当基初始化器只能通过辅助函数获得时,如何从基类派生?

这是一个通用的面向对象编程问题:

假设我有一个基类 B:

并假设我被告知通过以下工厂方法创建 B 的实例:

现在,问题是我需要从 B 派生,但我将如何像 createB() 那样初始化它?:

0 投票
2 回答
405 浏览

c++ - 取消引用这会导致分段错误

我有以下功能

我初始化init而不是构造函数的原因是因为LinearScheme扩展了一个PartitionScheme(具有虚拟方法的超类)类,而另一个类在递归使用构造函数的情况下执行此操作。

我有一个QuadTree执行相同初始化的类,因为每个QuadTree构造函数都是递归应用的。*this = QuadTree(bounds, maxSize) 类的 init 函数中的行QuadTree工作得很好。

但是,另一个子类 (LinearScheme) 中的这一行*this = LinearScheme()会导致 Seg 错误。

任何想法为什么会发生这种情况?

编辑 还替换该行:

有了这个:

或将其全部删除以消除 Seg Fault ... 为什么?

0 投票
1 回答
483 浏览

java - SimpleFactory、FactoryMethod、抽象工厂(实体示例)

我知道这个问题已经被解决了很多次,因此很明显,它并不像人们通常认为的那样微不足道......

为了澄清事情,我想我会使用相同的 bean 系列和相同的概念构建三种不同实现(简单工厂、工厂方法、抽象工厂)的示例,

您如何看待以下示例?你觉得它们清晰正确吗?

对于所有示例,我将使用这个 bean 系列

简易工厂

工厂方法

抽象工厂

对于抽象工厂示例,我添加了这些 bean

这里是抽象工厂的例子

0 投票
1 回答
2285 浏览

design-patterns - 抽象工厂与工厂方法:组合与继承?

我已经阅读了很多关于抽象工厂和工厂方法之间差异的帖子,但是有一个我无法理解的问题。

两者之间的一个区别在于,对于抽象工厂模式,一个类通过组合将对象实例化的责任委托给另一个对象,而工厂方法模式使用继承并依赖子类来处理所需的对象实例化

也许我知道为什么抽象工厂模式使用组合和委托来创建对象,但我不明白为什么工厂方法模式使用继承来创建具体的类对象。


这个问题与抽象工厂是什么或工厂方法是什么无关,因此这里没有答案

这是关于为什么当客户端也可以直接调用工厂方法时,工厂方法似乎使用继承。请取消标记为重复。

0 投票
0 回答
195 浏览

oop - 工厂方法空对象

我有一个返回缓存系统类(伪代码)的工厂方法类:

缓存类实现了简单的 get() 和 set() 方法(它使用定义通用方法的抽象类),这使我可以在需要时轻松切换缓存系统。正常使用会是这样的:

我想有一个设置来启用/禁用缓存,但我不想在代码中添加条件,询问是否在任何地方都启用了缓存。所以我想返回一个实现抽象类方法的 Void() 对象,以便在禁用缓存时使用它,该类将如下所示:

这是一个好方法吗?您认为如何在不在实际实现中添加条件的情况下处理启用/禁用设置的最佳方式?

谢谢!