rou*_*ble 2 java singleton static design-patterns class-variables
如果一个类实现了单例模式,那么所有变量都应该声明为static吗?
有什么理由不应该被宣布为静态吗?这有什么不同吗?
Nad*_*zie 12
不会.单例模式只意味着单个实例是唯一的实例 - 它并不意味着"使所有内容都可以静态访问".
单例模式为您提供了"单个实例"的所有好处,同时又不会牺牲测试和重构代码的能力.
编辑:
我要说的是,应该如何使用功能(取决于上下文)和如何初始化功能之间存在差异.
在大多数情况下,您的对象可能只有一个实例(例如,在最终的生产系统中),这可能是合适的.但是如果你强迫它成为唯一的选择,还有其他的情境(比如测试)会变得更加困难.
此外,制作静态的东西比"只有我班级的一个实例应该可访问"更具有重要意义 - 这通常是意图.
此外,在我所使用的软件中,对象的初始化和生命周期通常由其他人控制(我在这里谈论DI) - 并且制作静态的东西在这里没有帮助.