java設(shè)計(jì)模式之單例模式的詳解及優(yōu)點(diǎn)
java設(shè)計(jì)模式之單例模式
定義:如果一個(gè)類(lèi)始終只能創(chuàng)建一個(gè)實(shí)例,那么這個(gè)類(lèi)被稱(chēng)為單例類(lèi),這種設(shè)計(jì)模式被稱(chēng)為單例模式。
Spring框架里面可以將所有生成的bean對(duì)象都設(shè)置為單例模式,只需要在配置Bean實(shí)例時(shí)指定scope=“singleton”即可,或者不做配置默認(rèn)即為單例模式。
我們可以創(chuàng)建一個(gè)小的Demo來(lái)演示單例模式的實(shí)現(xiàn),只需要保證該類(lèi)只能創(chuàng)建一個(gè)實(shí)例,我們可以用權(quán)限修飾符private修飾該類(lèi)的構(gòu)造器。
提供一個(gè)創(chuàng)建該類(lèi)的接口,該接口只能用static修飾,類(lèi)里面創(chuàng)建一個(gè)成員變量來(lái)保存生成的實(shí)例。
代碼如下:
package test;
class Anmail{
}
class singlelonDemo {
private static singlelonDemo sd;
private singlelonDemo(){
}
public static singlelonDemo single(){
if(sd == null){
sd = new singlelonDemo();
}
return sd;
}
}
public class singleDemo{
public static void main(String[] args){
singlelonDemo sd1 = singlelonDemo.single();
singlelonDemo sd2 = singlelonDemo.single();
System.out.println(sd1==sd2);
}
}
輸出結(jié)果為true,表示生成的是一個(gè)實(shí)例。
單例模式是一種應(yīng)用很廣泛的設(shè)計(jì)模式,許多框架都有應(yīng)用,下面要講到的工廠模式里的工廠也只需要單個(gè)實(shí)例。
使用單例模式的兩個(gè)優(yōu)點(diǎn):
1、減少創(chuàng)建java實(shí)例所帶來(lái)的系統(tǒng)開(kāi)銷(xiāo)。
2、便于系統(tǒng)跟蹤單個(gè)java實(shí)例的生命周期、實(shí)例狀態(tài)等。
以上就是java單例模式的實(shí)例詳解,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- java設(shè)計(jì)模式之單例模式學(xué)習(xí)
- 淺析Java設(shè)計(jì)模式編程中的單例模式和簡(jiǎn)單工廠模式
- Java設(shè)計(jì)模式之單例模式實(shí)例詳解【懶漢式與餓漢式】
- Java設(shè)計(jì)模式之單例模式詳解
- 深入解析Java的設(shè)計(jì)模式編程中單例模式的使用
- Java設(shè)計(jì)模式之單例模式實(shí)例分析
- 簡(jiǎn)單講解在Java編程中實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式結(jié)構(gòu)
- java 設(shè)計(jì)模式之單例模式
- Java設(shè)計(jì)模式系列之深入淺出單例模式
相關(guān)文章
SpringBoot使用EmbeddedDatabaseBuilder進(jìn)行數(shù)據(jù)庫(kù)集成測(cè)試
在開(kāi)發(fā)SpringBoot應(yīng)用程序時(shí),我們通常需要與數(shù)據(jù)庫(kù)進(jìn)行交互,為了確保我們的應(yīng)用程序在生產(chǎn)環(huán)境中可以正常工作,我們需要進(jìn)行數(shù)據(jù)庫(kù)集成測(cè)試,在本文中,我們將介紹如何使用 SpringBoot 中的 EmbeddedDatabaseBuilder 來(lái)進(jìn)行數(shù)據(jù)庫(kù)集成測(cè)試2023-07-07
springMVC實(shí)現(xiàn)前臺(tái)帶進(jìn)度條文件上傳的示例代碼
本篇文章主要介紹了springMVC實(shí)現(xiàn)前臺(tái)帶進(jìn)度條文件上傳的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01
SpringBoot 圖形驗(yàn)證碼的生成和校驗(yàn)
隨著系統(tǒng)和業(yè)務(wù)的不停升級(jí),前后端代碼放在一起的項(xiàng)目越來(lái)越臃腫,已經(jīng)無(wú)法快速迭代和職責(zé)區(qū)分了,于是紛紛投入了前后端分離的懷抱,發(fā)現(xiàn)代碼和職責(zé)分離以后,開(kāi)發(fā)效率越來(lái)越高了,但是以前的驗(yàn)證碼登錄方案就要更改了。本文來(lái)看一下SpringBoot 圖形驗(yàn)證碼的生成和校驗(yàn)2021-05-05
解決Feign切換client到okhttp無(wú)法生效的坑(出現(xiàn)原因說(shuō)明)
這篇文章主要介紹了解決Feign切換client到okhttp無(wú)法生效的坑(出現(xiàn)原因說(shuō)明),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
Java利用Redis實(shí)現(xiàn)消息隊(duì)列的示例代碼
本篇文章主要介紹了Java利用Redis實(shí)現(xiàn)消息隊(duì)列的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
springboot 自定義配置Boolean屬性不生效的解決
這篇文章主要介紹了springboot 自定義配置Boolean屬性不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

