问题标签 [factory-method]
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.
design-patterns - 工厂模式 - CreateInstance 是否静态?
这是关于工厂模式的。我有点困惑。
我看到了createInstance()
方法是静态的实现和一些非静态的实现。
有人说这取决于“风格”或“品味”,有人说不是。根据四人帮的说法,维基百科说它应该是非静态的, http: //www.dofactory.com/Patterns/PatternFactory.aspx也说它应该是非静态的。
我的问题是:它是否取决于风格和品味,或者如果它以静态方式实现,它是否违反了工厂模式?什么是对的?
java - 使用 Spring 3.0 配置 Google App Engine 实体管理器
我正在尝试为一些基本的 Google App Engine 服务编写 Spring 配置。特别是对于 EntityManagerFactory 和 Entity Manager。
从 Java 代码创建 EntityManagerFactory:
我将其翻译为:
每次我需要一个 EntityManager
但我不知道如何将工厂方法应用于先前创建的工厂。
有谁知道?谢谢。
c# - 在 C# 中使用委托作为“工厂方法”进行单元测试
问题
让我们“画”出一幅情景图:
- 我有一个 SUT。(有一件好事:P)
- 我可以在我的 SUT 上注入一些依赖项。
- 在我做的一个方法中:new OtherClass(ParametersObtainedFromDependancies)。
- 我想在我的 SUT 中对该方法进行单元测试,而无需处理创建对 OtherClass 正常工作有意义的模拟对象的复杂性。这意味着要测试 OtherClass。
我对此的解决方案是使用委托的工厂方法:
坏处:它是公开的。您可以将其视为一个可选依赖项,如果需要,您可以覆盖它。但无论如何,公众的气味。
好处:我不需要创建将覆盖此方法的 MyTestSUT,甚至不需要在 SUT 上使用模拟来覆盖该方法。
问题
有没有更好的解决方案?它是否正确?
php - PHP 严格标准:这段代码有什么问题?
我在PHP 5.3.8上运行此代码:
并收到以下错误:
严格标准:静态函数 Geometry::fromArray() 不应该是抽象的
- 这种方法有什么问题?
- 强制具体类实现此工厂方法的任何可行替代方案?
c# - C#中的工厂创建方法?
我正在开发一个提供一些 ActiveX COM 对象的 API,我在下面阅读了这些警告:
“您必须使用工厂的“创建”方法来创建本节中的 COM 对象。一旦通过工厂方法创建了 COM 对象,该 COM 对象就会绑定到相应的 TWS COM 对象(COM 对象的一个实例) . 不要尝试将 COM 对象传递给 TWS COM 对象的另一个实例。”
这些话来自此 ActiveX API 上的 VB 示例的一部分。现在我正在使用c#,我应该怎么做才能遵循这个规则?
java - 参数化工厂方法模式
解释很长,但示例非常简单和基本。
我想通过工厂方法模式创建一个 Reader 对象,因为实际上我有一个 IniReader 和一个 XmlReader,它们都是 Reader 的子类。
具体类的选择是在运行时根据文件的类型进行的,将来应用程序应该处理其他文件格式。
我的问题是:对于这个简单的问题,尝试应用工厂方法模式是否有意义?
应用这种模式的尝试导致了只包含一个new MyObject()
调用的退化类。有时“简单”意味着“将来可以轻松更改而不会破坏客户端”,我认为 getter/setter 方法通常是单行的。但情况似乎并非如此。
我非常基本的实现:
然后,在我的工厂方法模式的核心,我有一个抽象的 ReaderCreator:
及其两个具体子类:
此时,我需要确定我拥有的文件,实例化正确的 ReaderCreator 并让它实例化正确的阅读器。
我很想为 ReaderCreator 抽象创建一个参数化的工厂方法(因此该方法必须是静态的),如下所示:
但这不是参数化的工厂方法,而是工厂模式的另一种“工厂方法”习语。
尽管如此,在我看来,这似乎是该模式最明显的实现。我刚刚将在 IniReaderCreator 和 XmlReaderCreator 之间决定的方法(可能在客户端)引入 ReaderCreator。
参数化工厂方法确实有些不同,因为它声明 ReaderCreator 的所有子类都重新实现了在 IniReader 和 XmlReader 之间选择的决策者算法,在这种情况下显然是荒谬的(实现create
返回 IniReader 的方法的 XmlReaderConstructor? )。
java - 工厂方法 VS 工厂对象
据我了解,工厂方法是简单工厂,工厂对象是抽象工厂?和:
-工厂方法(简单工厂):
工厂对象(抽象工厂):
?
我对吗?
工厂模式有多少实现,它们有什么区别?
c# - 从泛型方法返回对象作为接口
我有一个接口InterfaceBase
和一些从它派生的接口Interface1, Interface2
。接下来我有实现InterfaceX
接口的类,而不是基础类。
现在,我是泛型的初学者,在这方面有很多新方法在我的脑海里弄得一团糟:(。我想创建工厂(静态类),我称之为
这是我的(示例)工厂实现,它不起作用:
我想要实现的是从应用程序的其余部分隐藏类(它们是 Web 服务处理程序)以轻松交换它们。我想使用工厂,因为类将是单例,它们将存储在工厂内的字典中,因此工厂可以通过这种方法将它们传播到应用程序中,但作为接口..也许我没有正确使用约束是我做错事了?我的方法不好吗?有没有更好的东西,也许整个架构应该重新设计?图表以更好地显示架构。工厂不在里面
c#-4.0 - StructureMap 实例工厂方法
我正在尝试注册一个工厂方法来创建开放泛型类型的实例MongoCollection<>
。但是,当我GetInstance
看起来它使用的是 MongoCollection 的构造函数而不是工厂方法时。
然后我做
当我运行该GetInstance
行时,它永远不会在工厂方法中遇到断点,但它会抛出一个StructureMapException
说法“没有为 PluginFamily MongoDb.Driver.MongoServerSettings 定义默认实例”。有一个构造函数MongoCollection
需要 a MongoServerSettings
,但我不希望结构映射使用该构造函数,我希望它使用我的工厂方法。
任何想法为什么它不使用工厂方法?这是一个错误吗?
objective-c - 如何检测目标c静态方法中的调用类
如何从静态方法中检测调用类,以便如果该类是子类,则检测到子类?(见 MakeInstance 内的评论)