问题标签 [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.
domain-driven-design - 聚合根的工厂方法签名
我想编写一个工厂方法来实例化一个作为聚合根的实体。
该方法应该接受聚合的子实体和值作为实例化对象,还是应该只接受原始类型?
例如,如果我有一个由处理器和内存对象组成的实体计算机,工厂方法是否应该采用以下形式:
或者
这只是品味问题,还是这里有任何认真的考虑?
c# - 这是一个好的工厂方法实现吗?
我正在开发一个需要严格解耦接口的模块。具体来说,在实例化根对象(数据源)之后,用户只应该通过接口与对象模型进行交互。我有实际的工厂对象(我称它们为提供者)来提供实现这些接口的实例,但这留下了获取提供者的笨拙。为此,我在数据源上提供了几个方法:
我已经动态修改了一些细节以简化(例如,这个代码片段不包括传递给创建的实现实例的参数)。这是在 C# 中实现工厂方法的一种很好的通用方法吗?
language-agnostic - 我的工厂方法是否做得过火了?
我们核心产品的一部分是网站 CMS,它使用各种页面小部件。这些小部件负责显示内容、列出产品、处理事件注册等。每个小部件由派生自基本小部件类的类表示。渲染页面时,服务器从数据库中获取页面的小部件,然后创建正确类的实例。工厂方法对吗?
无论如何,这一切都很好,但随着时间的推移,小部件类型的数量已增加到大约 50 种,这意味着工厂方法相当长。每次我创建一种新类型的小部件时,我都会在该方法中添加另外几行代码,然后我的脑海中就会响起一个小警报,这可能不是最好的做事方式。我倾向于忽略那个警报,但它越来越响亮。
那么,我做错了吗?有没有更好的方法来处理这种情况?
c# - “产品”中的抽象方法 - 工厂方法 C#
我有一个用 C# 编写的简单类库(COM+ 服务)来使用 5 个 Web 服务:加、减、除、乘和比较。
我创建了抽象产品和抽象工厂类。抽象产品名为 WS 的代码:
如您所见,当其中一个子类继承 WS 时,必须重写这两种方法,这在某些子类中可能没有用。例如,比较不需要Calculate() 方法。
为了实例化一个新的 CompareWS 对象,客户端类将调用 CreateWS() 方法,该方法返回一个 WS 对象类型。
但是如果在 WS 中没有定义 Compare(),则无法调用 Compare() 方法。这是因为客户端将使用 WS 类型对象,而不是 CompareWS 对象。
这只是一个有两种方法的例子,但是如果有更多方法呢?在 WS 类中将所有方法都定义为抽象是愚蠢的吗?
我的问题是:我想定义 WS 的所有子类共有的抽象方法,而当工厂创建 WS 对象类型时,可以调用子类的所有方法(WS 的重写方法以及子类中的方法)。我该怎么做?
vb.net - 如何创建泛型构造函数?(即 BaseClass.FromXml( )
我不确定如何描述这一点,但我正在尝试创建一个包含名为 FromXml 的共享(工厂)函数的基类。我希望此函数实例化正确类型的对象,然后通过 XmlDocument 填充它。
例如,假设我有这样的事情:
我希望能够做这样的事情:
这可能吗?
.net - 如果我有一个工厂方法需要不同的参数用于不同的实现,我该怎么办?
我有一个接口IMessage
和一个类,它有几种创建不同类型消息的方法,如下所示:
我不希望这个类完成创建这些消息的所有工作,所以它只是委托给 a MessageCreatorFactory
,它根据给定的类型产生一个IMessageCreator
(基于消息类型 A、TypeB、TypeC 等的枚举)
所以我有 4 个实现IMessageCreator
:TypeAMessageCreator
, TypeBMessageCreator
, TypeCMessageCreator
,TypeDMessageCreator
我对此表示满意,除了因为每种类型需要不同的参数,我必须创建一个MessageParams
对象,其中包含 4 个不同参数的 4 个属性,但每个IMessageCreator
.
有没有替代方案?我的另一个想法是将参数数组作为 Create 方法中的参数,但这似乎更糟,因为您不知道参数是什么。或者在接口中创建多个 Create 重载,如果它们不适合该特定实现,则让它们中的一些抛出异常(即,您调用了需要更多参数的方法,因此您应该调用其他重载之一。)
这看起来好吗?有更好的解决方案吗?
c++ - 工厂方法是否适合我的问题?
这是我的问题,我正在考虑在 C++ 中使用工厂方法,你有什么意见?
有一个基类和许多子类。
我需要通过 TCP 在网络上传输对象。
我将在第一侧创建对象,并使用该对象创建一个字节数组 TCP 消息,并将其发送到另一侧。
另一方面,我将分解 TCP 消息,创建对象并将该对象添加到多态队列中。
factory - Smalltalk 相当于工厂方法?
Smalltalk 中是否使用了工厂方法,如果是,应该如何编写一种方法,而不是在 Java 中使用工厂方法?谢谢。