1
12
不。单例模式只意味着一个实例是唯一的实例——它并不意味着“使所有东西都静态地可访问”。 单例模式为您提供了“单实例”的所有好处,而不牺牲测试和重构代码的能力。 编辑: 我想说的是,功能的使用方式(取决于上下文)和功能的初始化方式之间存在差异。 在大多数情况下,对象只有一个实例(例如,在最终的生产系统中)可能是合适的。但是,如果你强迫它成为唯一的选择,其他的环境(比如测试)会变得更加困难。 此外,使某个静态的东西具有比“我的类只有一个实例应该可以访问”更重要的含义,这通常是意图。 此外,在我研究过的软件中,对象的初始化和生命周期常常由其他人控制(我在这里讨论的是DI),而使某个东西成为静态的对这里没有帮助。 |
2
4
在一个常见的单例模式中,你是这样做的
不
使用静力学。将类编码为使用普通字段,在构造函数中初始化,然后安排执行新的
|
3
3
不,唯一通常是静态的是对单例本身的引用(还有其他存储引用的方法,比如JNDI或依赖注入容器)。 不将字段声明为静态的原因(即使在单例模式中,您只需要它们的一个实例)是,这使您能够灵活地创建另一个与通常的单例类稍有不同的实例。您可能希望在特殊情况下这样做,例如用于测试。 即使你不需要这种灵活性,也没有理由放弃。将字段声明为静态字段没有您会失去的好处。 |
4
1
你 可以 这样做(不一定 应该 )但是,即使对于单例,我也倾向于将所有变量设置为对象级,而不是类级,因为:
底线:我从来没有想到过将它们作为对象级别有什么缺点,所以我就是这样做的。以上两个阶级层面的缺点可能是微不足道的,但它们确实存在。归根结底,这可能取决于个人喜好。 |
5
0
你可以在这里学习如何在Java中创建一个单独的单子(一种可能的方法): Wikibooks Design Patterns: Java Singleton 基本上,您不需要(也不应该)使类中的所有内容都是静态的,因为您打算将某些内容用作单例。有几个原因
|
S qasem · Android内存性能 6 年前 |
R83nLK82 · 在单例设计模式上引发IOException 6 年前 |
hal · 两个课程有什么区别?他们的工作方式不同吗? 6 年前 |
Jaquarh · 如何在不使用DI的情况下实例化父类 6 年前 |
Deepanshu · 基于PHP的Web应用程序中的单例对象状态 6 年前 |
dicle · 视图控制器中的依赖项注入 6 年前 |
Kozuki · 如何在生产代码中考虑单例? 6 年前 |