tob*_*son 8 architecture oop design-patterns
我有一个涉及相对较大的对象层次结构的问题,如下所示:
如您所见,层次结构相对复杂,并且至少在一个地方是循环的(网络有许多代理具有一个具有一个网络的邻域).目前我在类上使用静态构造方法GameFactory
来构建整个层次结构,但我很确定这是最不灵活的方法!
在构建复杂的对象层次结构方面,最好使用哪种模式?我读过了的Factory Method
,Abstract Factory
和Builder
模式,我觉得工厂模式之一是合适的,但我真的不知道如何将它应用到这样一个复杂的层次?
在我看来,系统的每个部分都需要很多工厂,但这会导致一组镜像模型类的工厂类.
编辑:从目前为止给出的建议讨论中可以清楚地看出,我应该更多地解释为什么我要求工厂构建我的对象层次结构而不是允许构造函数自己构建它们的依赖关系.
这是因为我使用依赖注入来帮助测试驱动开发.我正在采用一种模拟主义方法进行测试,这需要能够注入表示对象依赖关系的模拟,因此我必须避免new
在任何构造函数中使用.
根据目前给出的建议,似乎有很多可能的方法:
我倾向于采取最后的路线.在这种情况下采取最佳方法的共识是什么?
编辑:我正在撤销当前的答案(Patrick Karcher的答案),因为现在已经澄清了这个问题的重点,没有一个建议是完整的答案.
如果没有什么变化,即。如果您的构建过程是固定的,我会推荐最简单的方法:让对象本身负责构建它们的依赖对象,并建立链接(可能是双向的)。
示例:对于具有子集合的父对象,父对象可以有一个 addChild 方法来确保双向关系的一致性:
如果有什么变化,例如应在某些上下文中使用的子类,那么您必须准确定义变化的内容。只有找到自己的确切需求后,正确的模式才可能出现。:-)
我们可以帮助完成最后一部分,但您是唯一可以提供所需信息的人......;-)