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

java - 简单的Java“服务提供者框架”?

我指的是 Effective Java 第 2 章中讨论的“服务提供者框架” ,这似乎正是处理我遇到的问题的正确方法,我需要在运行时实例化几个类中的一个,基于 aString来选择哪个服务和一个Configuration对象(本质上是一个 XML 片段):

但是我如何让各个服务提供者(例如一堆默认提供者+一些自定义提供者)注册自己?

例如,如果我编写自定义类 MyFooAlgorithm 和 MyFooAlgorithmProvider 来实现 FooAlgorithm,并将它们分发到一个 jar 中,有没有办法让 registerProvider 被自动调用,或者我使用该算法的客户端程序必须显式调用 FooAlgorithmRegistry.registerProvider( ) 对于他们想要使用的每个类?

0 投票
2 回答
1123 浏览

spring - 扩展spring的默认组件工厂

这是一个简短的:我想修改 spring 实例化我的 bean 的方式(在这种情况下,通过创建代理而不是简单地实例化它)。

我不能使用 Jdk Dynamic Proxies 或 cglib 来生成代理(如果是这种情况,我可以使用 spring aop)。

在我看来,最好的方法是扩展 spring 的 bean 工厂(并告诉 spring 使用我的工厂),但我在 Google 上找不到如何做到这一点。

对此有什么想法吗?

编辑:

实际上,看起来最标准的方法是使用 BeanPostProcessor(http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanPostProcessor.html ),并使 PostProcessor 将 bean 包装在代理上。

如果我们无法在这里找到更好的解决方案(并且我们认为这是一个有价值的问题),我会发布这个作为答案。

0 投票
5 回答
10102 浏览

java - 在实现接口的类上强制使用单例模式

我最好用一个例子来解释这个问题。我有一个可用于访问数据的接口模型。Model 可以有不同的实现,可以表示各种格式的数据,比如 XMl、txt 格式等。Model关心格式。可以说一种这样的实现是myxmlModel

现在我想强制myxmlModelModel的所有其他实现遵循单例模式。通常的方法是使myxmlModels构造函数私有并提供静态工厂方法来返回 myModel 类的实例。但问题是接口不能有静态方法定义结果我无法对Model的所有实现强制执行特定的 Factory 方法定义。因此,一种实现可能以提供getObject()结束,而另一种实现可能已经获得NewModel()。.

一种解决方法是允许包访问myxmlModel 的构造函数并创建一个 Factory 类,该类创建myxmlModel对象并将其缓存以供进一步使用。

我想知道是否有更好的方法来实现相同的功能。

0 投票
7 回答
10249 浏览

c# - 如何将类型传递给方法 - 类型参数与泛型

我有一个类似于工厂的对象的方法。你给它一个类型,它创建一个实例并做一些其他的事情。一种优雅的方式(在我看来)是这样的:

但这让 FxCop 感到不安,他说这是一种糟糕的风格 - 我收到“CA1004:通用方法应提供类型参数”警告。关于不使用推理和东西的东西。所以,我能想到的唯一其他方法是这样的:

我相信这在许多帐户上不如第一种方法,但是样式规则...有关警告的MSDN文章甚至说没有理由压制它。

毕竟,我通过压制这个警告做得对吗?

0 投票
5 回答
4733 浏览

perl - 如何在 Perl 和 Moose 中编写工厂代码?

是否有更简单或更好(=> 更易于维护)的方式来使用 Perl 并Moose根据传入数据实例化类?

以下代码是我正在处理的项目中的精简示例。

编辑:当你调用 DBI 时,这让我很震惊。根据您传递的参数,它将使用完全不同的代码,同时保持(大部分)一致的界面

0 投票
7 回答
2012 浏览

c# - C# - 程序员面试挑战 - 接口和模式编程

如果有机会编程到接口(如简单的工厂模式),那么向初级和中级开发人员抛出一个好的简单问题是什么?

0 投票
1 回答
1319 浏览

database - 在哪里可以找到具有连接池的良好数据库(工厂)类?

我找到了很多关于如何创建数据库工厂或如何处理连接池的信息,但我无处找到完整的解决方案。

我一直使用自己的解决方案,但我认为它们并不完整或可以改进。

我可以在网上找到一些你们使用的设计好的课程吗?

谢谢 ;-)

0 投票
2 回答
2039 浏览

ruby-on-rails - DRYer 与 factory_girl 中的关联进行测试

任何人都可以提出一种更好的方法来让工厂使用预先构建的模型实例进行关联吗?例如,这样就可以在下面定义消息工厂的子级,以便调用 to Factory(:my_message)可以代替 Factory(:message,:sender=>@me)?

有时设置散列比这个人为的例子更复杂,或者只是在很多测试中重复,看起来最好把它推到工厂里。

我能想到的一种替代方法是定义一个测试辅助方法,例如create_message_owned_by(@me),但我希望 factory_girl 本身有一种方法。

factory_girl 工厂:

MessagesControllerTest 摘录(使用 shoulda):

0 投票
4 回答
919 浏览

wcf - 在针对接口进行编码时,工厂或 WCF 中对象实例化的依赖注入?

我正在编写一个客户端/服务器应用程序,其中客户端是 Windows 窗体应用程序,服务器是托管在 Windows 服务中的 WCF 服务。请注意,我控制应用程序的双方。

我正在尝试实现针对接口进行编码的实践:即我有一个由客户端应用程序引用的共享程序集。这个项目包含我的 WCF ServiceContracts 和接口,它们将暴露给客户。我试图只向客户端公开接口,以便它们只依赖于合同,而不是任何特定的实现。这样做的原因之一是我可以随时进行服务实现和域更改,而无需重新编译和重新部署客户端。在这种情况下,接口/合同不会改变。我只需要重新编译和重新部署我的 WCF 服务。

我现在面临的设计问题是:在客户端,我如何创建对象的新实例,例如ICustomer,如果客户端不知道Customer具体的实现?我需要创建一个新客户以保存到数据库中。

我是使用依赖注入,还是使用工厂类来实例化新对象,还是应该只允许客户端创建具体实现的新实例?

我不做 TDD,我通常只有一个实现ICustomer或任何其他公开的接口。

0 投票
6 回答
34191 浏览

singleton - “单身”工厂,好还是坏?

我有很多(抽象)工厂,它们通常被实现为单例。

通常是为了方便,不必让他们通过那些真正与使用或了解这些工厂无关的层。

大多数时候我只需要在启动时决定其余代码程序的工厂实现,也许通过一些配置

它看起来像

有些东西确实闻到了这个味道,我只是不确定是什么——它可能更像是一个不合时宜的全球而不是一个单身人士。并不是真的只有一个工厂可以创建 ColumnCalculations——尽管我的程序不需要更多。

这被认为是最佳做法吗?我是否应该将这些东西放在一些(半)全局 AppContext 类中?别的东西(我还没有准备好切换到一些更大的 IoC 容器,或者 spring.net 还顺便说一句)?