单例模式是一个简单的设计模式,其定义是

Ensure a class has only one instance, and provide a global point of access to it.

确保一个类只有一个实例,并提供全局访问点访问他

单列模式优点

  • 单例模式在内存中只有一个实例,减少内存开支(对于频繁创建和销毁操作来说)
  • 单例模式可以避免对资源的多重占用,比如一个项目中的读取配置文件操作
  • 单例模式可以作为全局访问点,优化和共享资源访问

单列模式缺点

  • 单例模式没有接口,一般比较难扩展,只能修改源代码
  • 由于没有接口,对测试不方便,无法用mock测试
  • 单例与单一职责冲突

单例模式UML图

image

源代码

1
2
3
4
5
6
7
8
9
10
11
public class Singleton {
private static final Singleton singleton=new Singleton();

private Singleton() {

}

public static Singleton getSingleton() {
return singleton;
}
}