java – 处理多个对象时的良好编程风格

我一直在编程一个棋盘游戏的软件版本.到目前为止,我已经写了与游戏板上物理对象相对应的类.我很好地编写程序逻辑,但是我发现许多逻辑类需要访问相同的对象.

起初我正在把适当的对象传递给被调用的方法,但是这变得非常繁琐,特别是当这些方法需要很多对象来执行它们的任务时.为了解决这个问题,我创建了一个初始化和存储我需要的对象的类.这允许我通过调用Assets.dice()来访问任何类的对象.

但是现在我已经考虑过了,这似乎不对.这就是为什么我在这里,我害怕我创造了一些上课.这个恐惧是没有根据的,还是我创造了灾难的食谱?

解决方法

你基本上陷入了单身形态.在很大程度上,这是一个坏的模式.通过允许您的任何应用程序的任何部分几乎可以随时访问这样的全局数据,您最终会遇到难以维护,调试和最重要的测试代码的意大利面.

我认为最好创建一个包含当前骰子,片段等的“上下文”,并根据需要将上下文传递给需要使用它的方法/类.这很干净,虽然是的,但是到处都是要痛苦的.但是,您可以获得优势,您可以跟踪谁在访问上下文,并且还可以创建模拟上下文以进行测试.如果将上下文传递到高级对象中,并且必须将上下文传递给其子组件,那么从头到尾知道上下文以及它来自哪里.

此外,理想情况下,让Context变得不可改变是很好的.这可能是不可能的.但是,如果您可以创建一个捕获当前状态并且是不可变的新上下文,那么您可以从应用程序中减少更多惊喜.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...