java单例模式,应该所有变量都是类变量吗?

rou*_*ble 2 java singleton static design-patterns class-variables

如果一个类实现了单例模式,那么所有变量都应该声明为static吗?

有什么理由不应该被宣布为静态吗?这有什么不同吗?

Nad*_*zie 12

不会.单例模式只意味着单个实例是唯一的实例 - 它并不意味着"使所有内容都可以静态访问".

单例模式为您提供了"单个实例"的所有好处,同时又不会牺牲测试和重构代码的能力.

编辑:

我要说的是,应该如何使用功能(取决于上下文)和如何初始化功能之间存在差异.

在大多数情况下,您的对象可能只有一个实例(例如,在最终的生产系统中),这可能是合适的.但是如果你强迫它成为唯一的选择,还有其他的情境(比如测试)会变得更加困难.

此外,制作静态的东西比"只有我班级的一个实例应该可访问"更具有重要意义 - 这通常是意图.

此外,在我所使用的软件中,对象的初始化和生命周期通常由其他人控制(我在这里谈论DI) - 并且制作静态的东西在这里没有帮助.