layout | title | cate1 | cate2 | description | keywords |
---|---|---|---|---|---|
wiki |
单例模式 |
Basis |
设计模式 |
单例模式 |
Basis |
-
限制唯一实例
-
提供一种易于全局访问实例的方式
-
什么时候使用静态类更好
比如 java.lang.Math 类这种工具类,不维护任何状态,仅提供全局的方法访问,这个时候用静态类更好,因为方法调用都是编译期绑定。
不建议使用静态类维护状态信息,特别是在并发环境下容易出现 race condition。
-
静态类和单例之间的区别
- 静态类有更好的性能,因为方法调用都是编译期绑定。
- 如果需要维护状态,使用单例更合适。
- 如果对象很大,单例可以懒加载。
-
单例的优势
更加面向对象。可以通过继承基类和实现接口,享受继承和多态的便利。
如果只是需要一系列静态方法的集合时,使用静态类,其它情况下使用单例。