我正在为这个服务器编写一个插件,我需要创建一个可以被几个类访问的播放器列表。
例如,将有三个类:
Events
Commands
Plugin
'events'类将有一个在线玩家列表及其上下文(我无法将此上下文添加到玩家)。我将需要从这三个类中访问此列表。
我不确定该怎么做,因为我担心班级装载机弄乱了我的东西。
我已经想过为玩家及其上下文(线程安全)创建一个带静态访问器方法的全局变量类,并且只是存储我需要的所有内容,但人们说全局变量在Java中是邪恶的,这应该是没有做。
我应该为这个问题做些什么?
答案 0 :(得分:2)
您可以创建一个 singleton 类,其中包含所有类需要访问的列表,然后将 singleton 添加为组合所有3个班级的成员。
singleton 设计模式在某种意义上是全局变量,但是以OO友好的方式应该可以正常工作而不是 evil
答案 1 :(得分:1)
您可以将播放器列表封装在任何数据结构中(假设为Players
或Map
支持的类List
或需要的任何结构)并将该结构的引用传递给需要它的类(Commands
,Plugins
等)可以是构造函数或setter。