享元模式定義:
運用共享技術有效地支持大量細粒度的對象。
理解 :
它使用共享物件,用來儘可能減少內存使用量以及分享資訊給儘可能多的相似物件;它適合用於只是因重複而導致使用無法令人接受的大量內存的大量物件。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部數據結構,當需要使用時再將它們傳遞給享元。
結構
兩個狀態:
內蘊狀態存儲在享元內部,不會隨環境的改變而有所不同,是可以共享的。
外蘊狀態是不可以共享的,它隨環境的改變而改變的,因此外蘊狀態是由客戶端來保持(因爲環境的變化是由客戶端引起的)。
優點:
享元模式優點,在於外部狀態相對獨立,使得對象可以在不同的環境中被複用(共享對象可以適應不同的外部環境)。且享元模式可共享相同或相似的細粒度對象,從而減少了內存消耗,同時降低了對象創建與垃圾回收的開銷。
缺點:
外部狀態由客戶端保存,共享對象讀取外部狀態的開銷可能比較大。享元模式要求將內部狀態與外部狀態分離,這使得程序的邏輯複雜化,同時也增加了狀態維護成本。