如何在Java中使用所有类都可访问的对象列表?

时间:2014-06-24 01:44:14

标签: java

我正在为这个服务器编写一个插件,我需要创建一个可以被几个类访问的播放器列表。

例如,将有三个类:

Events
Commands
Plugin

'events'类将有一个在线玩家列表及其上下文(我无法将此上下文添加到玩家)。我将需要从这三个类中访问此列表。

我不确定该怎么做,因为我担心班级装载机弄乱了我的东西。

我已经想过为玩家及其上下文(线程安全)创建一个带静态访问器方法的全局变量类,并且只是存储我需要的所有内容,但人们说全局变量在Java中是邪恶的,这应该是没有做。

我应该为这个问题做些什么?

2 个答案:

答案 0 :(得分:2)

您可以创建一个 singleton 类,其中包含所有类需要访问的列表,然后将 singleton 添加为组合所有3个班级的成员。

singleton 设计模式在某种意义上是全局变量,但是以OO友好的方式应该可以正常工作而不是 evil

答案 1 :(得分:1)

您可以将播放器列表封装在任何数据结构中(假设为PlayersMap支持的类List或需要的任何结构)并将该结构的引用传递给需要它的类(CommandsPlugins等)可以是构造函数或setter。