0

给定一个像这样的类层次结构: 一个包树 是否有一个有助于创建对象的类是个好主意?Ei 一个类,其方法对应于可以创建的每个类(方法 equals() 返回一个 CompareCriteria 例如)。我看到的优点是它会隐藏复杂的继承结构,并且会减少依赖关系。

4

5 回答 5

4

对象创建模式包括BuilderFactoryPrototype. 维基百科有一个相当详细的列表

于 2009-07-27T19:35:33.080 回答
2

它们实际上是一种设计模式——创建模式。维基百科对这些模式类型有一个合理的描述——起源于 GoF 书:

http://en.wikipedia.org/wiki/Creational_pattern

  • 抽象工厂模式
  • 工厂方法模式
  • 生成器模式
  • 惰性初始化模式
  • 对象池
  • 原型模式
  • 单例模式
于 2009-07-27T19:37:37.303 回答
1

类层次结构没有说明需要工厂方法或任何其他专门的方法来创建对象。你想对所有这些类做什么?会不会很难用?会不会很难延长?

创建工厂或类似机构是否会改善这种情况?

如果您无法下定决心,请创建一些使用类的示例(请提供实际示例),然后重构这些以使用您的工厂。

在那次练习之后,您应该能够自己决定。或者带着一些更具体的问题回来。

于 2009-07-27T19:59:26.557 回答
1

对象创建有两种或三种模式。最常见的是工厂,它似乎适用于这种层次结构。我不太记得其他的(也不记得有多少),但我认为另一个叫做原型。

如果您关心这些事情,请获取有关设计模式的书。

于 2009-07-27T19:31:40.433 回答
0

看起来不是特别复杂。在选择之前,您可能想了解如何进行单元测试——工厂可能使正确注入模拟变得非常困难。

此外,我还没有看到其他人列出依赖注入——我也会研究 DI 工具包,因为它可以解决单元测试问题以及与常见构建模式相关的其他一些问题。看起来你的一些类是建立在其他类的基础上的(就像你可能将它们结合起来解决一个问题),而 DI 在这方面有很大帮助。

于 2009-07-27T20:09:10.530 回答