饿汉模式
1 | public class Singleton{ |
2 | private Singleton(){} |
3 | private static Singleton instance=new Singleton(); |
4 | public static Singleton getInstance(){ |
5 | return instance; |
6 | } |
7 | } |
饱汉模式
1 | public class Singleton{ |
2 | private Singleton(){} |
3 | private static volatile Singleton uniqueInstance=null; |
4 | public static Singleton getInstance(){ |
5 | if(uniqueInstance==null){ |
6 | synchronized(Singleton.class){ |
7 | if(uniqueInstance==null){ |
8 | uniqueInstance=new Singleton; |
9 | } |
10 | } |
11 | } |
12 | return uniqueInstance; |
13 | } |
14 | |
15 | } |
嵌套类
1 | public class Singleton{ |
2 | private Singleton(){} |
3 | private static class holder{ |
4 | private static Singleton instance=new Singleton(); |
5 | } |
6 | public static Singleton getInstance(){ |
7 | return holder.instance; |
8 | } |
9 | } |
枚举类
1 | public eunm Singleton{ |
2 | INSTANCE; |
3 | } |