问题标签 [abstract-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 投票
4 回答
3713 浏览

c# - 为什么抽象工厂使用抽象类而不是接口?

我正在学习设计模式,书中的第一个例子是关于抽象工厂的。我已经在 VS 中构建了这个练习,一切看起来都不错,但是我想知道一个问题。

在书中,工厂类是这样实现的:

完成练习后,我注意到上面的类可以用以下代码替换:

当然,两个示例的功能完全相同,但我想知道使用抽象类而不是接口的原因是什么?

0 投票
1 回答
173 浏览

java - 没有抽象方法的工厂方法模式是否可行?

假设一个没有抽象方法的Java程序,是否可以在没有抽象方法的情况下实现工厂方法模式?

0 投票
0 回答
57 浏览

java - 抽象工厂中的类型丢失

我正在开发一个接受 SOAP 消息的 java 应用程序。SOAP 的主体包含各种文档。他们的数量不时变化(取决于专辑的版本)。

对于他们的分析,我正在尝试应用模式抽象工厂。但是我的实现,我遇到了一个问题:

第一个参数有我可以指向任何类型的枚举CustomDocument(虽然CustomDocument.DO1只有有效的Du)。而且这个错误只出现在运行时

如何避免?

一些类:

专辑 5_0_12 的工厂。

}

}

0 投票
1 回答
6365 浏览

c#-4.0 - 抽象工厂设计模式的缺点是什么?

像往常一样用不同的设计模式构建项目,架构师总是更喜欢那个特定设计模式的有利视图。但有时需要了解在未来的项目扩展中应该有哪些违规区域和劣势。我现在正在使用抽象工厂设计模式。我理解它,但无法弄清楚它的缺点,它的局限性,它会在哪里失败。有人可以解释一下抽象工厂设计模式的另一种观点吗?

0 投票
1 回答
192 浏览

dependency-injection - 在不同对象的队列中使用 StructureMap 注入正确的对象图

我有一个队列服务,它必须根据队列中对象的类型注入不同的依赖关系图。我正在使用Structure Map.

因此,如果队列中的对象是使用TypeA的具体类TypeA,如果是TypeB,则使用的具体类TypeB

我想避免队列中的代码,例如:

在图中,我还有一个泛型类,例如IReader(ISomething, ISpomethingElse)whereIReader是泛型的,但需要为类型注入正确的ISomethingISomethingElseISomething也会有依赖等等。

目前我创建一个TypeATypeB对象并使用 StructureMap 将一个通用处理器类注入其中,然后将factory手动注入一个TypeATypeB工厂传递给如下方法:

但是,因为工厂随后创建了IReader上面提到的泛型,所以我最终手动注入了所有 TypeA 或TypeB那里的类。

我希望这足够有意义。

我是新手,StructureMap希望有人可以在这里为我指明正确的方向,以获得灵活而优雅的解决方案。

谢谢

0 投票
1 回答
113 浏览

.net - 如果我们可以在客户端创建直接对象,为什么我们需要设计抽象工厂模式?

我在最近的采访中遇到了这个问题。我用谷歌搜索了它,但除了“这是创建模式,我们可以创建集中式对象”之外,我无法得出这个答案。正如我解释的那样,他问我,但是“我们可以直接在客户端类中为服务器类创建对象。我为什么要使用抽象工厂?”

0 投票
2 回答
1165 浏览

java - 工厂方法与抽象工厂

我已阅读有关子类创建所需对象的工厂方法和抽象工厂具有具体类创建所需对象的方法

工厂方法

使用工厂

使用工厂方法和抽象工厂实现的相同用例。为什么应该有 FactoryMethod 而不是使用 Abstract Factory 或 Utility Factory(例如 Chicago Factory/NewYorkFactory)。在哪种情况下工厂方法对抽象方法有用?

0 投票
1 回答
1027 浏览

design-patterns - 如何使用像 Ninject 这样的 IoC 来实现 [GoF]-ish 抽象工厂模式

抽象的

当设计需要像 [GoF] 所述的“抽象工厂模式”(包括多个产品和某些产品系列)时,设置 IoC 可能会变得有点棘手。特别是当具体的工厂实现需要通过运行时参数调度并在一些后续组件之间共享时。

鉴于以下 API,我试图设置我的 IoC(在本例中为 Ninject)以检索Configuration通过IConfigurationFactory. 配置存储一个IFactory实例,其实现由 type 的运行时参数确定ProductFamily。之后,工厂在配置中创建的产品类型应始终与请求的匹配ProductFamily。由类组成的子图Component具有相同的IFactoryper Configuration

测试

为了澄清预期的行为,我在 vstest 中添加了我的测试代码。但是提前添加了一些内容,感谢@BatterBackupUnit 询问这些细节:

  • 工厂只需要ProductFamily作为参数在实现之间进行选择,没有别的
  • 每个Configuration及其后续对象(如Component, )共享同一个工厂实例

所以我希望这会有所帮助:)

这个问题已经解决了,因此我删除了所有不必要的绒毛。

感谢@BatteryBackupUnit 您的时间和精力最好的问候

伊萨亚斯

0 投票
1 回答
1960 浏览

.net - Ninject、“抽象工厂”模式和运行时条件解析

介绍

我一直在阅读 Ninject 文档,我到达了它谈论工厂的部分(查看http://www.ninject.org/wiki.htmlhttp://www.planetgeek.ch/2011/12/31/ ninject-extensions-factory-introduction/)。那里引用了抽象工厂模式(维基百科)。

我一直发现 Wikipedia 文章和 Ninject 示例中描述模式的方式之间存在差异。我还在 SO 上进行了搜索并阅读了一些与该主题相关的答案,但我仍然观察到与 Wikipedia 中描述的方式不同的相似之处。

细节

在维基百科中

类图 你可以注意到:

  • 抽象工厂多种实现*具体工厂* 。
  • 抽象产品多种实现*具体产品* 。
  • 每个混凝土工厂生产一种混凝土产品。在图中 WinFactory生成WinButtonOSXFactory生成OSXButton
  • 如果我要编写一个在运行时有条件地确定类型的程序,很明显我会有一个公共抽象的多个实现(在图中 Button 接口的多个实现)
  • 如果我要使用抽象工厂模式来实现这一点,那么根据维基百科的文章,我推断至少有一种方法_文章没有显示另一种方法_将有条件地解析为多个实现中的一个对于工厂,这反过来会给我产品的多种实现之一

在 Ninject 文档中

我们有:

  • 我没有看到工厂和产品的多种实现
  • 除了允许这样的代码var bar = this.barFactory.CreateBar();而不是通过构造函数注入依赖之外,我没有看到这一点。能够使用这样的代码(示例?)可能有用,但这就是它的全部吗?

在 SO

  • 我看到了这个。检查最后一条评论,这似乎表明工厂中有多种方法返回不同的实现,但我们仍然只使用一个 具体工厂,因此没有遵循维基百科的文章
  • 似乎类似于 Ninject 的示例
  • 使用了依赖项,但类型仍然不是抽象的

问题

维基百科以外的例子真的遵循抽象工厂模式吗?

0 投票
0 回答
71 浏览

java - 目标不可达,“当前”返回 null - AbstractFactory

我正在尝试访问托管 bean 中的对象,该对象实现AbstractMB. 页面访问的任何属性都有错误“未知属性”。当我尝试通过命令按钮将其插入数据库时​​,PropertyNotFoundException会抛出异常。

AbstractMB相关代码:

完整的 FontMB 类:

模型包中的类 Fonte 实现java.io.Serializable、所有 getter 和 setterhashCode以及equals方法。并toString返回类名(“Fonte”)。

也尝试使用转换器,但结果是一样的。

我错过了什么?