{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}
享元模式應(yīng)當(dāng)在什么情況下使用
當(dāng)以下所有的條件都滿足時(shí),可以考慮使用享元模式:
滿足以上的這些條件的系統(tǒng)可以使用享元對象。
最后,使用享元模式需要維護(hù)一個(gè)記錄了系統(tǒng)已有的所有享元的表,而這需要耗費(fèi)資源。因此,應(yīng)當(dāng)在有足夠多的享元實(shí)例可供共享時(shí)才值得使用享元模式。
享元模式的優(yōu)點(diǎn)在于它大幅度地降低內(nèi)存中對象的數(shù)量。但是,它做到這一點(diǎn)所付出的代價(jià)也是很高的:
享元模式的應(yīng)用
享元模式在編輯器系統(tǒng)中大量使用。一個(gè)文本編輯器往往會提供很多種字體,而通常的做法就是將每一個(gè)字母做成一個(gè)享元對象。享元對象的內(nèi)蘊(yùn)狀態(tài)就是這個(gè)字母,而字母在文本中的位置和字模風(fēng)格等其他信息則是外蘊(yùn)狀態(tài)。比如,字母a可能出現(xiàn)在文本的很多地方,雖然這些字母a的位置和字模風(fēng)格不同,但是所有這些地方使用的都是同一個(gè)字母對象。這樣一來,字母對象就可以在整個(gè)系統(tǒng)中共享。
posted on 2006-01-03 15:50 夢在天涯 閱讀(730) 評論(0) 編輯 收藏 引用 所屬分類: Design pattern