亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

JAVA設(shè)計(jì)模式之單例模式

時(shí)間:2025-10-19 04:17:59 java語(yǔ)言

JAVA設(shè)計(jì)模式之單例模式

  1. 模式介紹

  模式的定義

  確保某一個(gè)類(lèi)只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

  模式的使用場(chǎng)景

  確保某個(gè)類(lèi)有且只有一個(gè)對(duì)象的場(chǎng)景,例如創(chuàng)建一個(gè)對(duì)象需要消耗的資源過(guò)多,如要訪問(wèn) IO 和數(shù)據(jù)庫(kù)等資源。

  2. UML類(lèi)圖

  角色介紹:

 。1)Client : 高層客戶(hù)端。

 。2)Singleton : 單例類(lèi)。

  3. 模式的簡(jiǎn)單實(shí)現(xiàn)

  public class Singleton { private static Singleton intance; private Singleton() {} public static Singleton getInstance() { /* * 一開(kāi)始多線程進(jìn)來(lái),遇到鎖,一個(gè)線程進(jìn)去,是為空,new對(duì)象; 后續(xù)線程進(jìn)入,不為空,不操作;最后直接返回 * 對(duì)象不為空,再有多個(gè)線程進(jìn)入該函數(shù),不為空,不執(zhí)行加鎖操作,直接返回 */ if (intance == null) { synchronized (Singleton.class) { if (intance == null) { intance = new Singleton(); } } } return intance; } } class Singleton1 {/pic/pic/pic/pic/pic/pic/pic/pic/pic/p>

  4.優(yōu)點(diǎn)與缺點(diǎn)

  (1)優(yōu)點(diǎn):

  A.由于單例模式在內(nèi)存中只有一個(gè)實(shí)例,減少了內(nèi)存開(kāi)支,特別是一個(gè)對(duì)象需要頻繁地創(chuàng)建、銷(xiāo)毀時(shí),而且創(chuàng)建或銷(xiāo)毀時(shí)性能又無(wú)法優(yōu)化,單例模式的優(yōu)勢(shì)就非常明顯。

  B.由于單例模式只生成一個(gè)實(shí)例,所以減少了系統(tǒng)的性能開(kāi)銷(xiāo),當(dāng)一個(gè)對(duì)象的產(chǎn)生需要比較多的資源時(shí),如讀取配置、產(chǎn)生其他依賴(lài)對(duì)象時(shí),則可以通過(guò)在應(yīng)用啟動(dòng)時(shí)直接產(chǎn)生一個(gè)單例對(duì)象,然后用永久駐留內(nèi)存的方式來(lái)解決;

  C.單例模式可以避免對(duì)資源的多重占用,例如一個(gè)寫(xiě)文件動(dòng)作,由于只有一個(gè)實(shí)例存在內(nèi)存中,避免對(duì)同一個(gè)資源文件的同時(shí)寫(xiě)操作。

  D.單例模式可以在系統(tǒng)設(shè)置全局的訪問(wèn)點(diǎn),優(yōu)化和共享資源訪問(wèn),例如可以設(shè)計(jì)一個(gè)單例類(lèi),負(fù)責(zé)所有數(shù)據(jù)表的映射處理。

  (2)缺點(diǎn)

  A.單例模式一般沒(méi)有接口,擴(kuò)展很困難,若要擴(kuò)展,除了修改代碼基本上沒(méi)有第二種途徑可以實(shí)現(xiàn)。

【JAVA設(shè)計(jì)模式之單例模式】相關(guān)文章:

Java單例設(shè)計(jì)模式12-21

JAVA多線程并發(fā)下的單例模式應(yīng)用02-22

java設(shè)計(jì)模式:工廠模式10-04

java設(shè)計(jì)模式:裝飾模式11-13

java設(shè)計(jì)模式:DAO模式03-13

java設(shè)計(jì)模式:多例模式01-30

解析Java的設(shè)計(jì)模式編程之解釋器模式的運(yùn)用01-21

Java的設(shè)計(jì)模式編程中責(zé)任鏈模式的運(yùn)用的實(shí)例講解03-13

Java的結(jié)構(gòu)型模式06-21