问题标签 [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 回答
247 浏览

.net - .config 到构造函数的技巧?

我正在做一个快速的项目来监控/处理数据。本质上,这只是监视器、时间表和处理器。监视器使用计划检查数据(ftp、本地、imap、pop 等)并将新数据发送到处理器。它们都有接口。

我正在尝试找到一种理智的方式来使用 config 来配置每个监视器使用的调度/处理器。这很容易:

我正在苦苦挣扎的是配置任何旧监视器/时间表/处理器的最佳方法是什么。一方面,可以实现构造函数参数或属性(不采用任何语法):

另一种解决方案是每个接口中的工厂方法,它将自定义配置作为参数:

我见过有人同时使用这两种方法。你喜欢哪个?将配置映射到构造函数时有什么技巧吗?

我对 DI 是否能融入这个烂摊子感到有些不安。最后,这将是每个监视器实例的一组绑定,除了配置可以覆盖的默认值之外,这似乎毫无意义。

0 投票
2 回答
851 浏览

asp.net - 在 ASP.NET 中实现 WebControl 工厂

我需要在 ASP.NET 中实现经典的工厂方法模式来动态创建服务器控件。

我发现创建 .ascx 控件的唯一方法是使用 Page/UserControl 类的 LoadControl 方法。但是,我发现将我的工厂与页面链接或将页面参数传递给工厂很麻烦。

有谁知道创建此类控件的另一种方法(例如我忽略的某个静态方法)?

谢谢。

0 投票
5 回答
839 浏览

java - Java:不可变到不可变的转换

我一直在考虑为我一直在研究的框架提供语法糖的方法。我想专门处理 Immitable 对象。

假设我有一个不可变对象并希望创建它的修改版本。在您看来,具有单个静态工厂方法的不可实例化类会违反 OO 原则吗?


作为使用字符串的示例:

因此,从这个例子中我可以写:

我觉得这很可读。


对这种方法有任何附带条件吗?

0 投票
5 回答
4436 浏览

c# - IoC 容器是否取代了工厂的使用

我刚刚开始使用 IoC 容器,如果这是一个愚蠢的问题,我深表歉意。

我在应用程序中有如下代码

它基本上是一个简单的工厂,它返回处理输入数据的正确策略。

IoC 容器会允许我消除这样的代码吗?也就是说:它是否允许我根据输入参数的类型动态选择要加载的具体实现?

还是我在这里偏离了方向?

0 投票
2 回答
682 浏览

c++ - 使用插件更改 C++ 应用程序中的默认行为

简而言之:设计和实现工厂+插件机制的最佳方式是什么,以便插件可以替换主应用程序中的对象。

我们有一个代码库,用于构建我们的应用程序。代码库适用于 70-95% 的应用程序,这意味着在每个新应用程序中,我们需要更改 5-30% 的默认行为(添加新功能、更改默认逻辑、添加 GUI 等)。

该实现是基于插件的:代码库内置在 EXE 和 DLL 中,当主 EXE 运行时,我们加载一个添加所需功能的 DLL。

目前每个插件都公开了以下功能:

其中 PluginInterface 定义为:

SomeClass1/SomeClass2 有一些默认行为,但可以被插件覆盖和更改。

当前的实现使得添加新的自定义类变得困难。我们想用插件替换主应用程序中的每个类,所以使用对象工厂是有意义的。

我知道的一个 SDK 使用以下技术:

我想知道这种方法是否有任何替代方法。

你会如何推荐像我刚才描述的那样设计和实现一个插件系统/工厂?

0 投票
5 回答
10282 浏览

objective-c - 如何将类名作为参数传递给可可中的对象工厂?

我正在开发一个对象工厂来跟踪一小部分对象。对象可以是不同的类型,但它们都会响应createInstancereset。这些对象不能从公共基类派生,因为其中一些必须从内置的可可类派生,例如NSViewNSWindowController

我希望能够通过简单地将所需的类名传递给我的工厂来创建任何合适对象的实例,如下所示:

makeObjectOfClass:方法看起来像这样:

有没有办法将类名传递给方法,就像我(CLASSNAME)className对上面的参数所做的那样makeObjectOfClass:

为了完整起见,这就是我要管理所有对象的原因。我希望能够通过调用[factory reset];.

0 投票
7 回答
16308 浏览

java - Java中的多态工厂/getInstance()

我的目标是创建一组对象,每个对象都有一个唯一标识符。如果具有该标识符的对象已经存在,我想使用现有对象。否则我想创建一个新的。我尽量不使用 Singleton 这个词,因为我知道这是一个肮脏的词......

我可以使用工厂方法:

或者同样,我可以有一个单独的 MyClassFactory 方法。

但我本来打算继承 MyClass:

如果我不再做,并调用 MySubClass.getInstance():

... 那么 subclassObj 将是一个普通的 MyClass,而不是 MySubClass。

然而,在每个子类中覆盖 getInstance() 似乎很老套。

我缺少一个简洁的解决方案吗?


这是问题的一般化版本。更具体,因为回答者要求他们。

该程序用于生成表示软件片段的节点之间的依赖关系的有向图。子类包括 Java 程序、Web 服务、存储 SQL 过程、消息驱动触发器等。

因此,该网络中的每个类“都是”元素,并且具有导航和修改与其他节点的依赖关系的方法。子类之间的区别在于populate()用于从适当的源设置对象的方法的实现。

假设名为“login.java”的节点得知它依赖于“checkpasswd.sqlpl”:

问题是 checkpasswd.sqlpl 对象此时可能已经存在,也可能不存在。

0 投票
6 回答
1287 浏览

c#-3.0 - 是否可以将 C# 对象初始化器与工厂一起使用

我正在查看 C# 3.0 中的新对象初始值设定项并希望使用它们。但是,我看不到如何将它们与 Microsoft Unity 之类的东西一起使用。我可能遗漏了一些东西,但如果我想保留强类型的属性名称,那么我不确定我能不能。例如我可以这样做(伪代码)

然后通过反射在 Create 中做一些事情来初始化参数...但是如果我希望它在 Create 级别强类型化,就像新的对象 intitalisers 一样,那么我看不出我能做什么。

有没有更好的办法?谢谢

0 投票
14 回答
27578 浏览

c++ - 如何设计一个简单的 C++ 对象工厂?

在我的应用程序中,有 10-20 个类被实例化一次 [*]。这是一个例子:

类的实例包含在一个对象中:

目前 TheManager 使用new操作符来创建对象。

我的意图是能够使用插件替换 SomeManagerClass (或任何其他类)实现与另一个。为了替换实现,需要两个步骤:

  1. 定义一个类 DerivedSomeManagerClass,继承 SomeManagerClass [插件]
  2. 创建新类 (DerivedSomeManagerClass) 而不是默认的 (SomeManagerClass) [应用程序]

我想我需要某种对象工厂,但它应该相当简单,因为总是只有一种类型要创建(默认实现或用户实现)。

关于如何设计一个像我刚才描述的简单工厂的任何想法?考虑到将来可能会有更多类的事实,所以它应该很容易扩展。

[*] 我不在乎它是否不止一次发生。

编辑:请注意,TheManager 中包含两个以上的对象。

0 投票
5 回答
1696 浏览

c# - 如何在 C# 中的结构上强制使用工厂

我有 ac# 结构,我需要禁止在其上调用 no args 构造函数。

我这样做主要是为了强制所有成员的显式值,因为没有有效的默认值并且所有成员都必须具有有效值。

在 C++ 中这很容易,添加一个私有构造函数,但 C# 不允许这样做。

有没有办法防止上述情况?

我真的需要强制使用工厂,这样防止所有公共构造函数调用也能正常工作。


完全披露者:为了避免单声道依赖,c# 应用程序被自动翻译为 D ,其中new Struct()产生了一个指针,这对我来说是个麻烦事。然而,尽管如此,这个问题还是相关的,所以请忽略它。