微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?