问题标签 [factory]

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 投票
8 回答
1764 浏览

c++ - 命名构造函数和继承

我正在研究 C++ 框架,并希望将自动内存管理应用于许多核心类。到目前为止,我有标准的方法是

但是,当我将 Foo 子类化时,上面的内容就中断了,因为即使 thoinit()是继承的,它仍然返回shared_ptr<Foo>包含指向实例的指针Foo

谁能想到一个优雅的解决方案?我是否应该坚持使用(半)手动包装类的实例shared_ptr?这也可以在不声明新的命名构造函数的情况下公开参数化构造函数......

IE。

0 投票
6 回答
7022 浏览

python - 在 Python 中使用基类构造函数作为工厂?

我使用基类构造函数作为工厂,并在这个构造函数/工厂中更改类以选择合适的类——这种方法是好的 python 实践还是有更优雅的方法?

我试图阅读有关元类的帮助,但没有取得很大成功。

这是我在做什么的例子。

有了这段代码,我可以通过基类 Project 创建 ProjectLocal/ProjectRemote 的实例:

我知道另一种方法是使用将基于 url 返回类对象的结构函数,然后代码看起来相似:

我的第一种方法只是口味问题还是有一些隐藏的陷阱?

0 投票
2 回答
1142 浏览

.net - 实现使用规范来确定要创建的对象类型的工厂

这主要是一个思想实验。所以这一切都是示例代码。我的目标是使用规范模式来消除工厂内大量的条件代码。因此,对于这个示例,我有一个 StatusData 对象,我想获得一个适合它的 IStatusUpdate 实现。

我有以下一组测试:

到目前为止,我的工厂实现如下所示:

一旦我发现了状态对象满足的规范,我就会失败,我如何将该规范映射到实现 IStatusUpdate 的类型。我很难过。

有人正确地建议我需要将规范映射到 IStatusUpdate 实现者。这种映射似乎是工厂的责任,把它挂在规范之外闻起来像是违反了 SRP。我可以创建一个具有该职责的 Mapper 类,但这似乎不是很通用,并且还提出了如何将映射器映射到规范的问题。

我在这里仍然缺少一个小飞跃。

0 投票
5 回答
265 浏览

design-patterns - 仅通过 Factory DP 实例化我的所有类有什么好处?

可能重复:
使用工厂而不是构造函数来创建对象的阈值是多少?

仅通过 Factory DP 实例化我的所有类有什么好处?

据了解,当您必须从类似对象列表中进行选择来执行某些任务时,工厂是好的,比如说翻译类(英语->法语,阿拉伯语->希伯来语......)但是当您真的有一个可能的时候选项,没有理由用工厂方法模糊/抽象逻辑。

有什么见解吗?

0 投票
2 回答
658 浏览

c# - 在 NHibernate 中,我可以使用工厂来构建复杂的聚合对象(实体)吗?

在 NHibernate 中,我可以使用工厂来构建复杂的聚合对象(实体)吗?如果是,那怎么办?如果没有..那么你的方法是什么?

0 投票
10 回答
90761 浏览

c++ - 有没有办法从保存类名的字符串中实例化对象?

我有一个文件:Base.h

和另一个文件:BaseFactory.h

有没有办法以某种方式将此字符串转换为实际类型(类),这样 BaseFactory 就不必知道所有可能的派生类,并且每个都有 if() ?我可以从这个字符串生成一个类吗?

我认为这可以通过反射在 C# 中完成。C ++中有类似的东西吗?

0 投票
1 回答
2259 浏览

ruby-on-rails - 工厂女孩中非活动记录关联的问题

我刚开始在测试时使用工厂女孩来更换夹具。我正在开发一个 twitter 客户端,我正在尝试使用 factory girl 创建用于测试的 twitter 对象。当我单独创建它们时,这很好。但是,如果我尝试将它们关联起来,我会收到以下错误。

导致问题的t.association :user, :factory => :twitter_user原因是当它存在时会引发此异常。有没有什么办法解决这一问题?还是工厂女孩只是为 activerecord 对象设计的?谢谢

0 投票
7 回答
8012 浏览

c# - 我的 DDD 工厂类中应该使用哪些方法?

我很难理解我的工厂类在我的 DDD 项目中应该做什么。是的,工厂应该用于创建对象,但它到底应该做什么。考虑以下工厂类:

我应该从工厂内直接调用存储库吗?

从数据库中检索数据时,我应该如何管理对象创建?

我需要什么来完成这个课程,我应该有什么其他方法?

我应该使用这个类从域和存储库中创建产品对象吗?

请帮忙!

0 投票
7 回答
10935 浏览

c++ - 可以将参数传递给工厂方法吗?

正确实现依赖注入的方法之一是将对象创建与业务逻辑分开。通常,这涉及使用工厂创建对象。

到目前为止,我从未认真考虑过使用工厂,所以如果这个问题看起来有点简单,我深表歉意:

在我遇到的所有工厂模式示例中,我总是看到没有参数化的非常简单的示例。例如,这是从Misko Hevery出色的How To Think About “new” Operator文章中偷来的 Factory。

但是,如果我希望我建造的每座房子都有一个名字,会发生什么?如果我按如下方式重写此代码,我是否仍在使用工厂模式?

请注意,我的工厂方法调用已从这里更改:

对此:

顺便说一句:我认为将对象实例化与业务逻辑分离的概念很棒,我只是想弄清楚如何将它应用于我自己的情况。让我感到困惑的是,我看到的所有工厂模式示例都没有将任何参数传递给 build() 函数。

需要明确的是:直到我需要实例化它之前,我才知道房子的名称。

0 投票
8 回答
1358 浏览

c++ - 工厂模式与全局状态不是一回事吗?

假设我有这样的课程:

如果没有工厂,我需要执行以下操作才能实例化MonkeyFish.

另一方面,如果我有MonkeyFishFactory,似乎我必须这样做:

  1. 我仍然有全局对象。

  2. 即使 MonkeyFishFactory 本身在GlobalObjects内部创建了(所以它们现在在 MonkeyFishFactory 内部而不是真正的全局变量中),看起来 MonkeyFishFactory本身仍然需要是一个全局对象,以便我可以随时访问它来创建一个MonkeyFish.

在这种情况下,工厂模式与全局状态不是一回事吗?

(我目前的假设是全局状态是一件坏事,消除它是一件好事。)