问题标签 [factory-pattern]

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 投票
18 回答
183623 浏览

design-patterns - 工厂模式。什么时候使用工厂方法?

什么时候在对象中使用工厂方法而不是工厂类是个好主意?

0 投票
30 回答
191550 浏览

dependency-injection - 依赖注入与工厂模式

引用的大多数使用依赖注入的示例,我们也可以使用工厂模式来解决。看起来在使用/设计方面,依赖注入和工厂之间的区别是模糊的或薄的。

曾经有人告诉我,你如何使用它会有所作为!

我曾经使用StructureMap一个 DI 容器来解决一个问题,后来我重新设计了它以使用一个简单的工厂并删除了对 StructureMap 的引用。

谁能告诉我它们之间有什么区别以及在哪里使用什么,这里的最佳做法是什么?

0 投票
14 回答
73689 浏览

java - 工厂模式和策略模式有什么区别?

谁能解释工厂模式和策略模式之间的区别?

对我来说,除了一个额外的工厂类(在工厂模式中创建一个产品对象)之外,两者看起来都一样

0 投票
8 回答
6641 浏览

java - 在 Java 中实现工厂模式的最佳方法

我正在尝试编写工厂模式以在我的程序中创建 MainMode 或 TestMode。我之前用来创建这些对象的代码是:

My Game (play) 将根据布尔值 (isMode) 创建 MainMode 对象或 TestMode 对象。如您所见,我在我的 TestMode 对象 (randNo()) 中添加了一个额外的值。此值在 TestMode 中用于允许用户输入他们自己的“随机数”,而在 MainMode 构造函数中这是随机生成的。在这个程序中,MainMode 和 TestMode 都是抽象类 Game 的子类。

现在我想用工厂模式替换这一行,尽管我不确定因为我的 TestMode 构造函数需要一个额外的对象,而且我不确定我需要在哪里传递这个值。如果我要创建一个工厂,它需要在一个新类中,可能命名为 GameFactory 或 ModeFactory 或类似的东西。

我该怎么办?

编辑:这里的问题是上面的代码在我的 GUI 中,其中 numberRanges、numberOfGuesses 和 randNo() 方法的值是。我想创建一个工厂类,但我无法传递这些值,因为 randNo() 会自行激活。这是我的 randNo() 方法。

问题是每当我通过 randNo() 时,它都会显示 JOptionPane。正如我已经说过的,GUI 和逻辑是分开的。GUI 位于 GUI 包中,而其余代码位于逻辑包中。

0 投票
27 回答
320792 浏览

design-patterns - 建造者设计模式和工厂设计模式有什么区别?

建造者设计模式和工厂设计模式有什么区别?

哪一个更有优势,为什么?

如果我想测试和比较/对比这些模式,如何将我的发现表示为图表?

0 投票
20 回答
3755 浏览

c# - 这是工厂方法创建模式吗?

我已经使用工厂方法创建模式有一段时间了。我最近才被告知:

不是我的“技术”负责人的工厂方法创建模式,没有告诉我原因或给我她的解释。我恳请解释,她告诉我她没有时间。我被告知只需重命名它。如果我错了,那么我无疑会接受我多年来一直错误地实施这一点。这是您将如何实现工厂方法创建模式的方式吗?提前致谢。

0 投票
5 回答
5564 浏览

java - java中的工厂模式

我正在使用据称使用工厂模式的 java 代码,但我并不完全相信该模式。

我的代码是这样做的:

在代码的某处:

我正在思考的一点是,如果工厂类没有静态 create() 方法,那么将需要实例化一个工厂,IMO 应该与实例化对象本身一样复杂。

我认为这样的工厂可以返回要生产的对象集合的论点不够好。如果需要在从工厂实际创建对象之前创建工厂实例,我觉得可以有更干净的解决方法。

我觉得create方法最好是工厂类的静态方法。但我也确信我的观点并不完全“正确”。

那么 SO 社区能否给出实例化工厂对象比使用静态创建方法更好的示例?

另外,我遇​​到了一个类似问题的答案,其中列出了这些链接和答案:所以我需要通过代码示例清楚地了解FactoryMethodPatternFactoryMethodCreationMethod之间的区别。

0 投票
6 回答
1861 浏览

asp.net - 什么时候应该使用工厂模式?

就像标题所问的那样,什么时候应该在您的脑海中触发表示“啊哈!我应该在这里使用工厂模式!”?我发现这些时刻会发生在许多其他设计模式中,但我从来没有停下来思考这个模式。

0 投票
1 回答
1157 浏览

c# - 您将如何编写类似于“工厂”设计模式的存储库模式?

我想我会重写这个问题(相同的迭代)。最初是如何围绕 EAV/CR 数据库包装存储库模式。我正在尝试一种不同的方法。

问题:您如何以“工厂”设计模式的方式编写数据存储库? 我有固定数量的实体,但这些实体的属性是相当客户特定的。他们宣传的产品都相似,但每个客户根据他们的商业模式附加不同的信息。例如,有些人关心浪费的百分比,而另一些人关心所售出的磅数。每次我们找到另一个客户时,我们都会添加一堆字段,删除一堆字段,然后花费数小时将每个解决方案与最新的通用版本保持同步。

我认为我们可以将存储库类放在工厂模式中,这样当我知道客户类型时,我就知道他们将使用哪些字段。实际的?更好的方法?Web 表单使用经过修改以反映布局上的字段的用户控件。我们目前将布局上的字段“连接”到产品表中的字段,然后是 CRUD 通用字段。

上一题内容

我们有一个 EAV/CR 数据模型,它允许同一实体使用不同的类。这会跟踪客户拥有截然不同的产品的产品。客户可以定义产品的“类”,用字段加载它,然后用数据填充它。例如,

Product.Text_Fields.Name
Product.Text_Fields.VitaminEContent

关于如何围绕此包装存储库模式的任何建议?

我们有一个三表 EAV:一个产品表、一个值表和一个列出字段名称和数据类型的元表(我们列出数据类型是因为我们还有其他表,例如 Product.Price 和 Product.Price 元数据)与其他产品,如 Product.Photo。)客户跟踪各种价格,如竞争对手的百分比折扣差异以及即时计算。

我们目前在 C# 中使用 Linq to SQL。

编辑:

我喜欢下面的“动态查询”Linq。我们的数据库背后的想法就像更衣室更衣室存储。每个运动员(或客户)按照他们希望的方式组织他们自己的储物柜,我们会为他们处理存储。我们不在乎储物柜里有什么,只要他们能用它做他们需要的事情。

非常有趣...传递给存储库的对象可能是动态的?这几乎是有道理的,几乎就像工厂模式。客户是否可以将他们自己的类定义放在一个文本文件中,然后我们继承它们并将它们存储在数据库中?

0 投票
9 回答
4759 浏览

unit-testing - 设置/拆卸会损害测试的可维护性吗?

这似乎引发了关于另一个问题的一些对话,我认为值得转入自己的问题。

DRY 原则似乎是我们解决维护问题的首选武器,但测试代码的维护呢?是否适用相同的经验法则?

开发人员测试社区中的一些强烈声音认为设置和拆卸是有害的,应该避免......仅举几例:

事实上,xUnit.net 已经完全出于这个原因将它们从框架中删除了(尽管有一些方法可以绕过这个自我强加的限制)。

你有什么经验吗?设置/拆卸是否会伤害或帮助测试可维护性?

更新:像 JUnit4 或 TestNG(@BeforeClass、@BeforeGroups 等)中可用的更细粒度的结构会有所作为吗?