在java中存储状态变量的最佳实践是啥? [关闭]
Posted
技术标签:
【中文标题】在java中存储状态变量的最佳实践是啥? [关闭]【英文标题】:What is the best practice to store state variables in java? [closed]在java中存储状态变量的最佳实践是什么? [关闭] 【发布时间】:2022-01-18 03:55:16 【问题描述】:我是 Java 新手。 假设我想用 Swing 或其他任何东西制作一个简单的游戏。例如,我如何以及在何处存储诸如玩家得分或进度之类的变量,以便我可以从不同的类访问它(在游戏期间和在数据库中持久化之前)。我喜欢我们在 React 中使用 useContext 的方式。我还在 php 的会话中使用了全局变量。
【问题讨论】:
我强烈建议不要使用“全局状态”。我宁愿建议实现一个获得高分的域对象或服务。然后可以在需要的地方注入和调用该服务。 我知道要做的是这个......服务服务=新服务(); service.setScore(score),但该对象是实例化对象的本地对象,不与其他类共享。 鉴于您正在谈论一个“简单”的游戏,并且可能不想过火……有点骇人听闻答案:使用单例。例如,一个 enum 有一个为您提供该 Service 对象的实例。或者在某处使用public static Service getService()
方法的老派方式。然后,您所有需要该服务的代码都可以从那里提取它(而不是考虑将它提供给您的对象的依赖注入框架)。
看看model–view–controller 设计模式。对于一个简单的游戏,您创建一个游戏模型来保持状态。高分可以保存在主模型中,也可以保存在单个 Player
类实例中。
【参考方案1】:
我强烈建议不要使用“全局状态”。我宁愿建议实现一个获得高分的域对象或服务。然后可以在需要的地方注入和调用该服务。
使用域对象或服务访问和修改域数据具有明确定义所有权的好处:业务对象/服务拥有数据,并且只能通过业务对象/服务访问和修改数据。
【讨论】:
感谢您的回答。恐怕我不知道如何实施您的建议,再加上我不完全理解。我希望我知道一些书或教程可以集中地教我这一点。以上是关于在java中存储状态变量的最佳实践是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Android:在 Activity 中声明 View 组件的最佳实践是啥? [关闭]
将 Play 代码从 git 存储库部署到生产环境的最佳实践是啥?