gpt4 book ai didi

java - 全局可访问的对象?

转载 作者:行者123 更新时间:2023-12-02 07:38:34 24 4
gpt4 key购买 nike

我正在制作一个小型角色扮演游戏,并实现了一种观察者设计模式,用于对象之间的事件驱动通信。我有一个 EventManager 来注册监听器、接受新事件并分派(dispatch)事件。问题是每个需要发送或接收事件的对象都需要一个 EventManager 实例来调用 addEvent() 或 register()。由于我的程序中几乎每个对象都将使用这个系统(以减少耦合并避免数据修改错误),我需要一种好的方法来访问它。

目前,我正在将引用显式传递给其构造函数和方法中的大量对象,但随着规模的增加,情况会变得更加困惑。特别是因为我开始在像角色这样的对象中需要它,并且角色不是在游戏中构建的;它们是从数据文件中反序列化的。

我知道全局变量一般来说都是糟糕的设计,但这些是我能看到的选项,所有这些都受到批评:

a) 将 EventManager 中的每个字段和方法设为静态

b)采用单例设计

c) 创建一个公共(public)静态 EventManager

有什么想法吗?谢谢

最佳答案

实际上,您当前所做的就是最佳实践。依赖注入(inject)很重要,不仅对于模块化,而且对于测试也很重要。您可以通过使用工厂来减轻传递参数的负担。

如果您要使用全局变量(您不应该使用),那么在 Java 中执行此操作的方法是某个类的静态公共(public)字段。

关于java - 全局可访问的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com