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

java - Java 是否存在像 Factory Girl 这样的框架?

Factory Girl 是 Rails 中一个方便的框架,用于轻松创建模型实例以进行测试。

来自工厂女孩主页

factory_girl 允许您为每个模型快速定义原型,并请求具有对手头测试很重要的属性的实例。

一个例子(也来自主页):

如果我需要一个用户可以打电话

这将产生一个具有工厂原型中指定的所有属性的用户,除了我明确指定的管理属性。另请注意,电子邮件工厂方法每次调用都会产生不同的电子邮件。

我认为为 Java 实现类似的东西应该很容易,但我不想重新发明轮子。

PS:我知道 JMock 和 EasyMoc,但是我不是在这里谈论一个模拟框架。

0 投票
19 回答
250193 浏览

design-patterns - 工厂和抽象工厂设计模式之间的基本区别是什么?

工厂模式和抽象工厂模式之间的基本区别是什么?

0 投票
3 回答
304 浏览

java - 拥有工厂时在哪里放置 getAll() 方法

我正在做一个java应用程序。

到目前为止,这是我的文件:

人机界面。

有一个 setName(String aName) 方法

PersonImpl

人员界面的实现。

PersonFactory 接口

有一个 createPerson()

PersonFactoryImpl

PersonFactory 接口的实现。

问题是我愿意添加一个 getAll() 方法,它返回一个人的集合,但我不知道把它放在哪里。

我正在考虑将其作为静态方法添加到 PersonImpl 或 PersonFactoryImpl,但我不确定。

哪个是最好的方法?

谢谢阅读!

0 投票
3 回答
271 浏览

asp.net - 有没有办法将类用作用户控件的类工厂?

.NET 2.0 中有没有办法将类用作用户控件的类工厂?换句话说,1 个 super 坐在那里,当我想要一个用户控件时,它会创建它并将其返回给我。似乎它需要我似乎无法引用的 ASP 命名空间。

我有一个带有占位符的母版页。根据用户的身份验证,我想动态加载用户控件。例如,如果他们通过了身份验证,它可能是一个搜索控件,如果他们没有登录,它可能是一个广告。我可以动态加载它们。但我的计划是使用一个类来控制它。现在我必须在后面的母版页代码上加载它们。类中没有要显示的代码,因为它不会让我引用用户控件,所以我不会走得太远。

0 投票
3 回答
1678 浏览

c++ - “自工厂”模式

我不知道这个有没有正式的名称,但我一直在玩我喜欢称之为“自我工厂”的模式。基本上,这是一个抽象基类充当自己的工厂的时候。让我解释:

我的系统中有 Foo 对象和 Bar 对象,它们通过接口 FooInterface 和 BarInterface 使用。我需要为我的客户提供正确类型的 Foo 和 Bar。在编译时决定创建哪个具体的 Foo 对象。例如,如果你在 win32 上编译,你只想创建 Win32Foo 对象,如果你在 OSX 上编译,你只想创建 OSXFoo 对象等等。但是,创建哪个具体的 Bar 对象是在运行时根据键字符串决定的。

现在,我的问题是关于实施该方案的最佳方式。我想出的一种方法是使用常规工厂:

另一种方法是使用我所说的“自我工厂”:

从可用性的角度和架构的角度来看,每种方法的优缺点是什么?

0 投票
1 回答
1832 浏览

ruby-on-rails - 在使用 Factory Girl 工厂进行测试时,如何覆盖 AASM 中的 :set_initial_state?

更新

下面回答。如果链接的站点消失,您可以使用 mocha 来存根初始状态并防止覆盖,如 ...

原始问题

我目前正在运行 Acts As State Machine Rails 插件(顺便说一句,它节省了大量时间)并且在与 Factory Girl 一起使用它时遇到了一些挑战(也很棒)。

我希望能够在使用工厂创建对象时设置对象状态。问这个问题的一种通用方法是“在使用工厂创建对象时如何调用类方法?”

我可以随时调用 t.activate!每个测试中的方法,但这会使我的测试变得脆弱。我正在寻找一种在工厂创建级别运行此方法或将其设置在 factory.rb 中的方法。

谢谢...

0 投票
5 回答
28670 浏览

unit-testing - 具有具体类作为返回类型的单元测试工厂方法

所以我有一个工厂类,我正在尝试找出单元测试应该做什么。从这个问题中,我可以验证返回的接口是否属于我所期望的特定具体类型。

如果工厂返回具体类型,我应该检查什么(因为目前不需要使用接口)?目前我正在做类似以下的事情:

这样做的问题是Assert.IsNotNull似乎有些多余。

此外,我的工厂方法可能正在设置该特定类的依赖项,如下所示:

我想确保我的工厂方法正确设置了所有这些依赖项。有没有其他方法可以做到这一点,然后让public/internal我在单元测试中检查这些依赖项属性?(我不喜欢修改测试对象以适应测试)

编辑:为了回答罗伯特哈维的问题,我使用 NUnit 作为我的单元测试框架(但我不会想到它会产生太大的影响)

0 投票
7 回答
1557 浏览

c++ - 如何将工厂模式与代码灵活性结合起来

我正在考虑使用工厂函数在同一层次结构中创建不同的类。我了解通常工厂通常执行如下:

我正在尝试一种方法,使该过程可以自动化,从而不需要对各种条件进行硬编码。

到目前为止,我能想到的唯一方法是使用地图和原型模式:

该映射将在第一个元素中保存类型字符串,在第二个元素中保存类实例(原型):

该函数可能如下所示:

不幸的是,原型方法仅在您只希望工厂创建的类每次都相同时才有效,因为它不支持参数。

有谁知道是否有可能以一种好的方式做到这一点,还是我坚持使用工厂功能?

0 投票
6 回答
3192 浏览

delphi - 通用工厂

假设我有一个 TModel:

和2个后代:

和工厂:

现在我想重构一下:

到目前为止还可以,但是每次创建TModel后代时,我都必须修改工厂case语句。

我的问题:这是否可以为我所有的TModel后代创建一个 100% 的通用工厂,所以每次创建TModel后代时我都不必修改TModelFactory

我尝试使用Delphi 2009泛型但没有找到有价值的信息,都与基本用法等TList<T>有关。

更新 对不起,但也许我不清楚或不明白你的答案(我仍然是菜鸟),但我想要实现的是:

0 投票
8 回答
14317 浏览

c# - 工厂根据泛型 C# 创建对象

根据传递给工厂类的泛型类型实例化对象的最有效方法是什么,例如:

你会怎么做?哪个分支语句?ETC...