java 設(shè)計(jì)模式之單例的實(shí)例詳解
java 設(shè)計(jì)模式之單例的實(shí)例詳解
設(shè)計(jì)模式思想
什么是設(shè)計(jì)模式:我作為初學(xué)者,今天第一次正式學(xué)習(xí)設(shè)計(jì)模式,我覺(jué)得對(duì)與理解什么是設(shè)計(jì)模式很重要,那么什么是設(shè)計(jì)模式呢?
設(shè)計(jì)模式:解決問(wèn)題的一種行之有效的思想。
設(shè)計(jì)模式:用于解決特定環(huán)境下、重復(fù)出現(xiàn)的特定問(wèn)題的解決方案
我的理解是前人在軟件設(shè)計(jì)的時(shí)候碰到了一類(lèi)問(wèn)題,他們總結(jié)出了一套行之有效,并且經(jīng)過(guò)驗(yàn)證的解決方案。
設(shè)計(jì)模式的優(yōu)點(diǎn):
1、設(shè)計(jì)模式都是一些相對(duì)優(yōu)秀的解決方案,很多問(wèn)題都是典型的、有代表性的問(wèn)題,學(xué)習(xí)設(shè)計(jì)模式,我們就不用自己從頭來(lái)解決這些問(wèn)題,相當(dāng)于在巨人的肩膀上,復(fù)用這些方案即可。
2、設(shè)計(jì)模式已經(jīng)成為專(zhuān)業(yè)人士的常用詞匯,不懂不利于交流。
3、能讓你設(shè)計(jì)的系統(tǒng)更加專(zhuān)業(yè),讓系統(tǒng)有更好的架構(gòu)。
設(shè)計(jì)模式1~~單例
單利設(shè)計(jì)模式是用來(lái)解決在內(nèi)存里面只能存在一個(gè)的某個(gè)類(lèi) 的問(wèn)題。 這個(gè)比較抽象,打個(gè)比方說(shuō) 你要做一個(gè)打麻將游戲,丟骰子,第一個(gè)人丟了顯示的幾個(gè)數(shù)字,后面的人也要用。骰子這個(gè)類(lèi)在內(nèi)存里只允許存在一份。此類(lèi)問(wèn)題就需要用單例設(shè)計(jì)方案解決。
第一種: 餓漢式 先自己new 出來(lái)。速度快,單是占用內(nèi)存多。
public class Single {
private final static Single s = new Single();
//類(lèi)只能有一個(gè)故私有化構(gòu)造方法,不讓外面new對(duì)象
private Single(){
}
//工廠(chǎng)方法的命名規(guī)范
getinstance
//當(dāng)外面沒(méi)辦法new對(duì)象時(shí)候,我們對(duì)像給外面調(diào)要自己來(lái)new
// 當(dāng)沒(méi)發(fā)new 對(duì)象時(shí)候,必須是靜態(tài)方法,給外界使用。
public static Single getInstance(){
return s;
}
}
第二種: 懶漢式
//懶漢式
public class Single2 {
// 先步開(kāi)內(nèi)存,需要用的時(shí)候才new
private static Single2 s=null;
private Single2(){
}
// synchronized 用來(lái)防多線(xiàn)程時(shí)。第一個(gè)和第二個(gè)線(xiàn)程搶資源都會(huì)進(jìn)入s==null,
時(shí)new 兩次。
public synchronized static Single2 getInstance(){
if(s==null){
s = new Single2();
}
return s;
}
}
synchronized 看成鎖是屬于getInstance方法的。當(dāng)方法屬于static時(shí),鎖屬于類(lèi)模板的,當(dāng)方法是對(duì)象調(diào)用時(shí)鎖就屬于對(duì)象的。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之醫(yī)院心理咨詢(xún)問(wèn)診系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+Spring+Maven+mybatis+Vue+mysql開(kāi)發(fā)的醫(yī)院心理咨詢(xún)問(wèn)診系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有心理咨詢(xún)問(wèn)診該有的所有功能,感興趣的朋友快來(lái)看看吧2022-01-01
drools規(guī)則動(dòng)態(tài)化實(shí)踐解析
這篇文章主要為大家介紹了drools規(guī)則動(dòng)態(tài)化實(shí)踐解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
使用IDEA和Gradle構(gòu)建Vertx項(xiàng)目(圖文步驟)
這篇文章主要介紹了使用IDEA和Gradle構(gòu)建Vertx項(xiàng)目(圖文步驟),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
dubbo如何實(shí)現(xiàn)consumer從多個(gè)group中調(diào)用指定group的provider
這篇文章主要介紹了dubbo如何實(shí)現(xiàn)consumer從多個(gè)group中調(diào)用指定group的provider問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
java微信開(kāi)發(fā)API第四步 微信自定義個(gè)性化菜單實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了java微信開(kāi)發(fā)API第四步,自定義菜單以及個(gè)性化菜單實(shí)現(xiàn) ,感興趣的小伙伴們可以參考一下2016-06-06
Spring Boot項(xiàng)目中定制PropertyEditors方法
在本篇文章里小編給大家分享的是一篇關(guān)于Spring Boot定制PropertyEditors的知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2019-11-11

