问题标签 [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 投票
4 回答
6065 浏览

c# - 工厂方法返回 null 可以吗?

我想知道这里的最佳实践。如果工厂方法无法创建任何内容,则返回 null 是一种好习惯吗?这是一个例子:

我猜另一种选择是返回 aNullCommand或其他东西,但最佳实践是什么?

0 投票
4 回答
379 浏览

c# - 如何防止工厂方法模式在构造函数中引起有关虚拟成员调用的警告?

www.dofactory.com 上,我找到了工厂模式的真实示例。但是代码会在 ReSharper 中生成关于构造函数中的虚拟成员调用的警告。

导致警告的代码如下:

在消费代码中,您可以简单地使用:

我确实理解为什么在构造函数中调用虚拟成员是一个坏主意(如此所述)。

我的问题是如何重构它以便仍然使用工厂模式,但在构造函数中没有虚拟成员调用。

如果我只是CreatePages从构造函数中删除调用,消费者将不得不显式调用该CreatePages方法:

我更喜欢Resume实际创建包含页面的简历所需的全部内容的情况。

0 投票
2 回答
127 浏览

c# - 这仍然是工厂方法吗?

如果我不需要一个特殊的工厂类并且我想要一个具体的客户端来实例化正确的部分怎么办。客户端需要从该部分调用 Hello() 。其他地方的重点是使工厂方法成为特殊创建者类的方法。但在这里,它立即出现在客户端中。这仍然是工厂方法模式吗?如下所示使用它是否正确?

0 投票
4 回答
721 浏览

java - 在 valueOf() 和 newInstance() 之间选择的标准是什么?

假设我有一个类 ObjectInfo,其中包含对象名称和对象类型作为字符串。(我只是为了提出问题而做一些事情。)

如果我想提供一个静态工厂方法来创建此类的实例,以下两种方法中哪一种更好?为什么?

基本上,我想问的是我们什么时候应该使用 valueOf() 和什么时候 newInstance() ?程序员社区之间有什么约定吗?

-Ankit

0 投票
2 回答
7290 浏览

java - 将参数传递给 Spring 工厂 bean 工厂方法

我有一个Spring这样声明的bean:

我的getSecurityHandler方法如下所示:

这个securityHandlerbean 在范围内prototypegetSecurityHandler当它用spring构造时,我需要将参数传递给方法。这甚至可能吗?我找不到任何关于它的文档。

0 投票
9 回答
109233 浏览

java - 设计模式:工厂 vs 工厂方法 vs 抽象工厂

我正在从网站上阅读设计模式

在那里我读到了工厂、工厂方法和抽象工厂,但它们太混乱了,定义不清楚。根据定义

工厂 - 创建对象而不向客户端公开实例化逻辑,并通过通用接口引用新创建的对象。是工厂方法的简化版

工厂方法 - 定义创建对象的接口,但让子类决定实例化哪个类,并通过通用接口引用新创建的对象。

抽象工厂 - 提供用于创建一系列相关对象的接口,而无需明确指定它们的类。

我还查看了有关抽象工厂与工厂方法的其他 stackoverflow 线程,但那里绘制的 UML 图使我的理解更加糟糕。

谁能告诉我

  1. 这三种模式有何不同?
  2. 什么时候用哪个?
  3. 如果可能的话,还有与这些模式相关的任何 java 示例吗?
0 投票
1 回答
275 浏览

php - PHP 对象创建、工厂方法和依赖注入

我期待一个很好的模式来创建绑定到数据库的对象。我将用一个简单的例子来说明我的想法:创建用户。

第一:创建/加载用户的工厂方法。用户配置在新创建的实例中完成。

第二:立即创建新用户的工厂方法。

第三:使用带有静态工厂方法的工厂类。

我总是可以做这样的事情:

另一件事是,我是否应该创建一个为数据库提供句柄的单例,该句柄将在应用程序上用于创建对象(而不对对象内部的句柄进行硬编码)?

例子:

所以,我真正的问题是,最好的模式是什么?我知道这可能太相对了,但我需要一些提示,当然,我想将依赖关系留在外面,而不是硬编码在对象内部。

提前致谢。

0 投票
1 回答
1073 浏览

java - Spring - Path 的工厂方法

我正在尝试生成一个表示java.nio.file.Path使用静态方法的 bean Paths.get(String path)。我当前的 Spring 设置如下所示:

但它回来了一个 excpetion No matching factory method found: factory method 'get'。任何想法为什么会这样?

0 投票
1 回答
1277 浏览

c# - 工厂方法和泛型

我有以下接口和实现:

我将有多个实现,它们都通过实体框架返回不同的数据。在某些时候,我想向用户表示一个实现 IRepository 接口的类的列表。我使用以下代码执行此操作。这对我很有用。

但是,我还想创建一个工厂方法,给定一个特定的字符串将返回一个具体的存储库类型,并允许我调用它的“GetAll”方法。在伪代码中:

(我知道这行不通,因为我必须在工厂方法中指定具体类型)。

我想要这个功能,因为我想让用户能够将报表绑定到特定的数据源。通过这种方式,他们可以启动一个新报表,其中报表的数据源绑定到(例如)TrendDataRepository.GetAll() 方法。

但是,也许是因为世界末日越来越近了;-) 或者是星期五下午,我无法再清楚地思考,我不知道如何意识到这一点。

一些指针将非常受欢迎。

0 投票
1 回答
1096 浏览

php - 在工厂方法中正确使用依赖注入 (PHP)

当我使用 OO 设计模式时,我想确保我真的得到了它。我了解依赖注入的重要性以及服务容器/工厂对象。我喜欢工厂方法的想法,它可以在通过静态方法加载时将依赖项注入自身,返回完整的自身副本。我喜欢使用对象的代码中的干净程度。而且,在测试中,您可以注入不同的对象(覆盖或实例化而不使用工厂方法,见下文)

以下代码有什么引起警钟的吗?我是否正确理解这一点?

对我来说,当我在控制器和其他模型中创建和使用对象时,这给了我很大的灵活性,我可以像这样实例化:

现在我的对象已经按照我想要的方式设置了

输出:

并且在内部其他对象都易于使用

而且,如果您想将其用于单元测试,您可以执行以下任一操作:

或者