Java:类中的所有东西都是静态的 – 这是合理的吗?

我只是想知道我所做的事情是不是很糟糕的设计.

我有一个ArrayList的东西.我需要这个列表永远存在.我只需要有一个这样的清单.我也有一些方法可以与这个列表进行交互.因此,我让一切都变得静止.

问题在于,由于所有这些东西都隐藏在一个类中,因此该类中的所有内容都被声明为静态.这看起来有点奇怪,因为我想让整个课程都是静态的.

Java不允许我将整个类静态化并且我被教导在我的代码中最小化静态方法的事实在我的头脑中引起了一些警钟,但老实说我看不出任何合理的理由为什么我做得不好.

编辑:关于该计划的更多信息以及为什么我决定做我做的事情,因为我猜这会有所帮助(当然,它被问到了).

程序的中心是两个数据库,一个用于项目,另一个用于字符.
角色需要暂时拥有项目,但所有项目必须始终列出.

我决定我会有一个项目的arraylist,每个项目都有一个布尔标记可用或不可用(可以很容易地显示所有项目和可用项目).每个角色都有自己的,较小的项目arraylist,我将从数据库添加项目的重复项.

为了能够从其他类访问数据库(这是我从这个想法开始的地方),我认为我最简单的选择是简单地使大型arraylist静态,因为没有我不需要它的情况并且没有情况在哪里我需要不止一个.当然,当我将列表设置为静态时,我需要使所有与它交互的基本方法也是静态的.

我很确定有更好的方法来做我想做的事情,但我只是一个初学者练习.

EDIT2:哦,项目列表将被添加到,删除,并在程序运行时修改它们的项目.接收物品副本的角色的另一个效果是,只要拥有物品,他们自己的物品就会保持不变.

解决方法

根据您的更新,您已经达到了经典的“它是单身人士!”那一刻,有人应该向你指出“它(几乎)从来不是一个单身人士!”.相反,这应该是一个普通的,非静态的非单例类,应该编写应用程序的其余部分以始终使用它的单个实例.您的应用程序只需要一个事物的单个实例这一事实并不会使该事物成为单例.您可以阅读Google搜索 “why is singleton evil”“singleton antipattern”中的几篇文章.

听起来你可能正在谈论共享的可变状态,这是另一种(巨大的)蠕虫病毒,你不想在没有经过仔细考虑的情况下进入它们.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...