单例模式
创建时间:
0x00 单例的几种实现方式:
类图:
classDiagram
class Singleton{
+private Singleton()
+private static final Singleton instance
+public static Singleton getInstance()
}
Singleton<|-- Singleton
0x01 饿汉式
这是最简单的单例实现方式之一,它在类加载时就创建了单例对象。
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Singleton { private Singleton() {}
private static final Singleton instance = new Singleton();
public static Singleton getInstance() { return instance; } }
|
0x02 懒汉式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class Singleton { private Singleton() {}
private static Singleton instance;
public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
public class Singleton { private Singleton() {}
private static Singleton instance;
public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
|
0x03 静态内部类
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public class Singleton { private Singleton() {}
private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); }
public static Singleton getInstance() { return SingletonHolder.INSTANCE; } }
|
0x04 枚举
1 2 3 4 5 6 7 8
| public enum Singleton { INSTANCE; public void someMethod() { } }
|
0x05 双重校验锁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class Singleton { private Singleton() {}
private volatile static Singleton instance;
public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
|
文章标题:单例模式
本文作者:zhu8fei
发布时间:2024-08-13, 15:51:57
最后更新:2024-08-15, 09:37:02
原始链接:http://www.zhu8fei.com/2024/08/13/singleton-pattern.html
版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。