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

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

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

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

解决方法

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

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

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

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量