Johuer's Blog

多学知识,精简代码

0%

图解设计模式(Creational)-Singleton 5/23

只有一个实例

示例代码

饿汉模式

1
2
3
4
5
6
7
8
9
10
11
12
public class Singleton1 {

private static Singleton1 instance = new Singleton1();

private Singleton1() {
}

public static Singleton1 getInstance() {
return instance;
}

}

懒汉模式(线程不安全)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Singleton2 {

private static Singleton2 instance;

private Singleton2() {

}

public Singleton2 getInstance() {
if (instance == null) {
instance = new Singleton2();
}
return instance;
}

}

懒汉模式(双检锁、线程安全)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Singleton3 {

private static volatile Singleton3 instance;

private Singleton3() {

}

public Singleton3 getInstance() {
if (instance == null) {
synchronized (Singleton3.class) {
if (instance == null) {
instance = new Singleton3();
}
}
}
return instance;
}
}

枚举

1
2
3
4
5
public enum Singleton4 {

instance;

}