2017-06-13
真正完美的单例是什么样的
今天发现了一个新的知识,就是单例的写法,很多人都会说,写个单例而已,so eazy ,其实里面还有很多门道,比如我经常写的都是这样的单例:
1 2 3 4 5 6 7 8 9 10
| public class Single { private static Single instance; private Single() {} public static Single getInstance() { if (instance == null) { instance = new Single(); } return instance; } }
|
其实几乎完美的单例写法是以下这样的,双重检查模式。大名鼎鼎的 EventBus 的 getDefault() 方法就是这样写的。此方法最大的不完美应该就是显得不够简洁,哈
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Single { private static volatile Single instance; private Single() {} public static Single getInstance() { if (instance == null) { synchronized (Single.class) { if (instance == null) { instance = new Single(); } } } return instance; } }
|
fangxiaogang