定義:單例模式是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱(chēng)為單例類(lèi)的特殊類(lèi)晃洒。通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類(lèi)只有一個(gè)實(shí)例而且該實(shí)例易于外界訪問(wèn)妻枕,從而方便對(duì)實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。如果希望在系統(tǒng)中某個(gè)類(lèi)的對(duì)象只能存在一個(gè)紧阔,單例模式是最好的解決方案。
從代碼上來(lái)分析,單例模式,首先向外提供了一個(gè)可被訪問(wèn)的實(shí)例化的對(duì)象活孩,如果沒(méi)有此對(duì)象時(shí)速蕊,該printer類(lèi)創(chuàng)建一個(gè)嫂丙。如果遇到多線程并發(fā)訪問(wèn),加上關(guān)鍵字Synchronized规哲,上鎖讓沒(méi)有持有該對(duì)象的類(lèi)處于等待狀態(tài)跟啤。當(dāng)前持有該printer的線程任務(wù)結(jié)束之后,處于等待中的線程才能逐個(gè)去持有該實(shí)例唉锌,去操作其方法隅肥。這樣的一個(gè)過(guò)程 在編程中被稱(chēng)為單例模式。
如果在系統(tǒng)中不使用單例模式的話袄简,在碰到多線程訪問(wèn)的時(shí)候腥放,printer就會(huì)給要請(qǐng)求的類(lèi),分別在內(nèi)存中new出一個(gè)printer對(duì)象绿语,讓這些請(qǐng)求的類(lèi)去做print方法秃症。這樣大量占有內(nèi)存,就會(huì)導(dǎo)致系統(tǒng)運(yùn)行變慢吕粹,像電腦的CPU一樣种柑,占有量極高,電腦卡死不動(dòng)的感覺(jué)匹耕。因?yàn)橄到y(tǒng)的硬件設(shè)施需求變動(dòng)量小聚请,所以只能想出一個(gè)節(jié)約成本 的方法就是,單例模式稳其,讓多線程處于等待的狀態(tài)驶赏,一個(gè) 一個(gè)的去解決,這樣欢际,即節(jié)約內(nèi)存,提交了運(yùn)行的成本矾兜。也就是單例存在的意義损趋。