java设计模式--单例设计模式
生活随笔
收集整理的這篇文章主要介紹了
java设计模式--单例设计模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package com.henu;
/*餓漢就是類一旦加載,就把單例初始化完成,保證getInstance的時(shí)候,單例是已經(jīng)存在的了。而懶漢比較懶,只有當(dāng)調(diào)用getInstance的時(shí)候,才回去初始化這個(gè)單例。*/
public class Demo03_單例 {public static void main(String[] args) {Single s1 = Single.newInstance();Single s2 = Single.newInstance();System.out.println(s1 == s2);//trueSingleClass1 c1 = SingleClass1.getInstance();SingleClass1 c2 = SingleClass1.getInstance();System.out.println(c1 == c2);//true}
}
//餓漢式
class Single{//創(chuàng)建一個(gè)靜態(tài)私有對(duì)象private static Single INSTANCE = new Single();//私有化構(gòu)造函數(shù)private Single() {};//返回靜態(tài)私有對(duì)象public static Single newInstance() {return INSTANCE;}
}
//懶漢式
class SingleClass1{//初始值為nullprivate static SingleClass1 INSTANCE = null;private SingleClass1() {};//直到真正需要該類的實(shí)例時(shí),才創(chuàng)建,但必須保證線程安全public static synchronized SingleClass1 getInstance(){if (INSTANCE == null) {INSTANCE = new SingleClass1();}return INSTANCE;}
}
老漢式:?
package Single;public class Demo03 {public static void main(String[] args) {SingletonOld so1 = SingletonOld.so;System.out.println(so1);SingletonOld so2 = SingletonOld.so;System.out.println(so2);System.out.println(so1 == so2);//true// SingletonOld.so = null;} }class SingletonOld {/*1.私有化構(gòu)造函數(shù)2.將對(duì)象實(shí)例化為final*/private SingletonOld() {}public static final SingletonOld so = new SingletonOld(); }?
?
?
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的java设计模式--单例设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java基础---try后小括号(1.7
- 下一篇: java设计模式--简单工厂设计模式Si