享元模式
享元模式(flyweight pattern)定義:
擯棄了在每個(gè)對(duì)象中保存所有數(shù)據(jù)的方式,通過(guò)共享多個(gè)對(duì)象所共有的相同狀態(tài),從而讓我們能在優(yōu)先的內(nèi)存容量中載入更多的對(duì)象。
從這個(gè)定義可以發(fā)現(xiàn),享元模式要解決的核心問(wèn)題就是節(jié)約內(nèi)存空間,使用的辦法是找出相似對(duì)象之間的共有特征,然后復(fù)用這些特征,所謂“享元”
,即被共享的單元。
例如一個(gè)文本字符串中存在很多重復(fù)的字符,如果每一個(gè)字符都用一個(gè)單獨(dú)的對(duì)象來(lái)表示,將會(huì)占用較多的內(nèi)存空間,我們可以使用享元模式解決這一類(lèi)問(wèn)題。
享元模式通過(guò)共享技術(shù)實(shí)現(xiàn)相同或者相似對(duì)象的重用,在邏輯上每一個(gè)出現(xiàn)的字符都有一個(gè)對(duì)象與之對(duì)應(yīng),然而在物理上他們卻是共享一個(gè)享元對(duì)象
享元模式結(jié)構(gòu):
兩種狀態(tài):
內(nèi)部狀態(tài):不會(huì)隨著環(huán)境的改變而改變的可共享部分
外部狀態(tài):指的是隨著環(huán)境的改變而改變的不可以共享的部分
總結(jié):
優(yōu)點(diǎn):
極大的減少了內(nèi)存中相似或者相同的數(shù)量,節(jié)約系統(tǒng)資源,提高系統(tǒng)性能
享元模式中的外部狀態(tài)相對(duì)獨(dú)立,且不影響內(nèi)部狀態(tài)
缺點(diǎn):
為了使對(duì)象可以共享,需要蔣享元對(duì)象的部分狀態(tài)外部化,分離內(nèi)部狀態(tài)和外部狀態(tài),使程序邏輯輔復(fù)雜化
posted on 2024-02-26 10:53 青山遠(yuǎn)樹(shù) 閱讀(16) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)