我有一个涉及相对较大的对象层次结构的问题,如下所示:
如您所见,层次结构相对复杂,并且至少在一个地方是循环的(网络有许多代理具有一个具有一个网络的邻域).目前我在类上使用静态构造方法GameFactory来构建整个层次结构,但我很确定这是最不灵活的方法!
在构建复杂的对象层次结构方面,最好使用哪种模式?我读过了的Factory Method,Abstract Factory和Builder模式,我觉得工厂模式之一是合适的,但我真的不知道如何将它应用到这样一个复杂的层次?
在我看来,系统的每个部分都需要很多工厂,但这会导致一组镜像模型类的工厂类.
编辑:从目前为止给出的建议讨论中可以清楚地看出,我应该更多地解释为什么我要求工厂构建我的对象层次结构而不是允许构造函数自己构建它们的依赖关系.
这是因为我使用依赖注入来帮助测试驱动开发.我正在采用一种模拟主义方法进行测试,这需要能够注入表示对象依赖关系的模拟,因此我必须避免new在任何构造函数中使用.
根据目前给出的建议,似乎有很多可能的方法:
我倾向于采取最后的路线.在这种情况下采取最佳方法的共识是什么?
编辑:我正在撤销当前的答案(Patrick Karcher的答案),因为现在已经澄清了这个问题的重点,没有一个建议是完整的答案.
我无法从通过源的区别是什么之间找工作了cattr_*,并mattr_*分别在类和模块提供的方法.我读到了这个问题:Rails模块中的mattr_accessor是什么?它提供了两种方法的一些细节,但没有强调差异.
所以我的问题是它们之间的区别是什么?为什么我们在源代码中实际上完全相同时需要两套方法?另外,我们应该在什么时候使用?
假设我有两个UUID实例:
uuid1 = UUID.randomUUID();
uuid2 = UUID.randomUUID();
Run Code Online (Sandbox Code Playgroud)
如果那两个比较uuid1小于uuid2ie,
uuid1.compareTo(uuid2) // -1
Run Code Online (Sandbox Code Playgroud)
他们的字符串表示是否总是比较以给出相同的结果,即,
uuid1.toString().compareTo(uuid2.toString()) // -1 ????
Run Code Online (Sandbox Code Playgroud)