单利模式
模式的优缺点
优点
- 单一实例,减少内存开支。需要频繁创建的无状态类,可以减少创建实例
- 重量级的类,单利模式可以降低创建的开销。
缺点
- 扩展困难
场景
- 创建需要占用大量资源的类
- 需要大量staic方法的类
- 生成唯一序列号的类
模式的写法
- 模式1
public class Singleton1 {
private static Singleton1 singleton1;
private Singleton1() {
}
//多线程不安全.
public static Singleton1 getInstance() {
if (singleton1 == null)
singleton1 = new Singleton1();
return singleton1;
}
}
- 模式2
public class Singleton2 {
private static volatile Singleton2 singleton2;
private Singleton2() {
}
//线程安全的
public static synchronized Singleton2 getInstance() {
if (singleton2 == null)
singleton2 = new Singleton2();
return singleton2;
}
}
- 模式3
public class Singleton3 {
private Singleton3() {
}
private static Singleton3 singleton3 = new Singleton3();
public static Singleton3 getInstance() {
return singleton3;
}
}
- 模式4
public class Singleton4 {
private static volatile Singleton4 singleton4;
private Singleton4() {
}
public static Singleton4 getInstance() {
if (singleton4 == null) {
synchronized (Singleton4.class) {
if (singleton4 == null) {
singleton4 = new Singleton4();
}
}
}
return singleton4;
}
}