*说明:本文参考书籍《设计模式之禅》第2版,作者:秦小波,章节:第7章。
1.定义
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
2.通用类图
3.通用代码
public class Singleton {
private static final Singleton singleton = new Singleton();
//限制产生多个对象
private Singleton(){
}
//通过该方法获得实例对象
public static Singleton getSingleton() {
return singleton;
}
//类中其他方法尽量是static
public static void doSomething() {
}
}
4.优缺点
4.1优点
- 由于单例模式在内存中只有一个实例,减少了内存开支和系统性能的开销
- 避免对资源的多重占用
- 可以在系统中设置全局的访问点
4.2缺点
- 没有接口,扩展困难
- 对测试不利
- 与单一职责有冲突
5.使用场景
- 要求生成唯一序列号的环境
- 在整个项目中需要一个共享访问点或共享数据
- 创建一个对象需要消耗的资源过多
- 需要定义大量的静态常量和静态方法的环境