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

wcf - 我可以/应该使用模拟框架将事件动态添加到类吗?

考虑以下接口:

这是将从 WCF 服务接收“事件”的 WCF 回调的合同。我对此接口的实现如下所示

这允许我在客户端代码中实例化回调并挂钩 SomeEvent 事件。每当服务器调用我的回调时,我都会收到一个普通的旧 .NET 事件。一切都很好。

问题来了:我想写一个工厂类来自动创建这个回调,所以我很容易在我的所有项目和任何接口中重用这种方法。工厂将被称为:

我可以/应该使用模拟框架来动态创建这个类,还是应该硬着头皮直接发出 IL?还是我应该只手动编写每个实现的代码?还是有另一种我没有想到的方法?

0 投票
5 回答
1104 浏览

design-patterns - 工厂如何知道要创建哪种类型的对象?

我相信工厂方法设计模式适合我正在尝试做的事情,但我不确定赋予它多少责任(它创建的子类的知识)。在 Wikipedia上使用工厂方法模式的示例几乎完全描述了我所处的情况:

我的问题是,这个figureOutImageType功能是什么样的?在这个特定示例中,我假设它检查文件头InputStream以确定数据的图像格式。我想知道它ImageReaderFactory本身是否知道如何解析文件头并确定文件类型是 GIF、JPEG等,或者如果它在每个Reader类中调用一个函数,让它知道它是什么类型的图像。像这样的东西,也许:

似乎让工厂知道如何解析图像会破坏封装,让子类决定应该创建哪个是工厂方法设计模式的一部分。然而,这个函数似乎figureOutImageType也只是添加了一些冗余代码,因为为什么不让每个子类InputStreamgetImageReader函数中的 进行检查并跳过 switch 案例呢?

我以前没有任何使用工厂的经验,我希望从过去使用过工厂的人那里获得一些关于处理这个问题的最佳方法的见解。让工厂知道其子类的内部工作是否可以,或者他们是否应该负责让工厂知道要创建哪个,以及如何组织它们?

谢谢!

0 投票
2 回答
226 浏览

c++ - 如何设计我的课程以利用工厂并进行扩展?

我的 c++ SOA 应用程序有一个“会话”概念,用于在服务之间交换数据。例如,它用于在执行提交或回滚更改的会话 B 之前检查某些服务 A 操作的合法性。任何。

我有 2 种会话模式:正常和假设。更进一步,我有不同的会话,合法性会话,分配会话,提交会话等。这是一个主要问题。合法性会话可以是假设或真实等。

如何解决这个问题并避免代码重复?

我可以制作一个ISessionFactory接口并让WhatIfFactoryRealFactory实现它。然后我可以制作一个ILegalitySession并让WhatIfLegalitySessionRealLegalitySession实现它。然后我的工厂将返回适当的对象。

它有两个主要问题。如果新模式来了怎么办?我将不得不为所有会话实施新工厂和新课程!如果出现新的会话类型怎么办?我必须改变两个工厂...

也许从 2 个层次结构中辞职并让 whatIf 会话“装饰”真实会话?如何本地化更改?

0 投票
4 回答
25867 浏览

java - java中的工厂方法模式使用泛型,如何?

我的代码如下所示:

现在,我知道这段代码有异味……有很多原因。但是,此代码也在这里: http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html,请参阅 9.8

我打算做的是:1)根据环境(系统属性)在运行时切换我的 DAO 实现。2)利用java泛型,这样我就可以避免类型转换......例如做这样的事情:

相对于:

请提出您的想法和建议。

0 投票
4 回答
2521 浏览

java - 为什么 Java Pattern 类使用工厂方法而不是构造函数?

一般情况下对此进行了很好的讨论。

但是,我想知道为什么Pattern类使用compile静态方法来创建对象,而不是构造函数?

在我看来,使用构造函数更直观。

0 投票
7 回答
3420 浏览

oop - 通过工厂方法将参数传递给特定的子类

假设我有一个抽象类 Drink 和一个工厂方法,它选择在运行时创建的饮料类型(葡萄酒、啤酒等)。

每个 Drink 都需要一些参数来正确初始化自己。其中一些是所有饮料共有的;例如,它们可能都需要 DrinkConfig 参数。

但每种饮料也可能有其独特的要求。也许 Wine 需要一个侍酒师辅助对象来初始化自己。Beer 不需要它,但它可能需要它自己的辅助对象。

那么我应该将什么传递给工厂方法?当我调用它时,我拥有所有可用的辅助对象,所以我可以将它们全部传递给工厂。但这最终可能会引发很多争论。有没有更好的方法来设计这个?

编辑:假设我不能只在工厂中创建辅助对象;它们只能从呼叫者那里获得。

0 投票
3 回答
1321 浏览

python - 回调方法的工厂 - Python TKinter

编写一个测试应用程序来模拟 PIO 行,我有一个非常简单的 Python/Tk GUI 应用程序。使用数字键 1 到 8 来模拟 PIO 引脚 1 到 8。按下按键 = PIO 高电平,松开按键 = PIO 变为低电平。我需要它不是问题。我有点陷入了一个兔子洞,试图使用工厂来创建按键回调函数。

这是一些精简的代码:

我终于得到了某种方法工厂来为回调工作,但我觉得它不是很令人满意。

所以我的问题是,你能有一个类方法工厂,它会按照我尝试的方式生成类方法(参见注释掉的代码和 App 类方法 cb_factory())?

注意:是的,我知道这个应用程序一次只能按住 4 个键,但这对于我的目的来说已经足够了。

0 投票
5 回答
943 浏览

c# - 使用工厂时的反射成本

stackoverflow的好人,

与往常一样,我正在编写一个工厂以动态实例化对象。

为了模式化,我有四种类型:

我从工厂实例化了最后两种类型。困境来了:我是否应该只用隐藏反射的“is”运算符测试描述符类型,然后花费一些东西。

我应该使用枚举“类型”作为嵌入在 PetDescriptor 中的属性吗?

或者使用虚拟方法:

投票已开启!

编辑:问题是关于反射性能,而不是工厂设计。

0 投票
5 回答
6111 浏览

java - 我可以让 Hibernate 通过工厂方法创建一个对象吗?

有没有办法在 Hibernate 中映射工厂方法(而不是让 Hibernate 调用默认构造函数并反射设置属性或字段)?

如果它不能被映射,Hibernate 是否为逐个类地创建自定义对象提供了一个钩子?

谢谢!

0 投票
4 回答
143 浏览

language-agnostic - 如果工厂返回的对象是静态的,它是否仍被视为工厂?

当我的应用程序启动时,它需要根据登录的用户获取正确 DAL 类的实例(目前有 4 个)。某些用户正在从某些数据库中下拉。

如果我不实例化那些 DAL 类的实例,而是简单地返回它的正确静态实例,它是否仍被视为“工厂”模式?我不需要不断地创建这些对象,因为所有用户都可以共享它们。

伪代码: