設計模式之—— 享元模式

享元模式: 相同的數據就拿來共享。  (線程池、tableViewCell 等)。

特點: 可共享享元對象, 享元池。 

 

 

優點:大大減少對象的創建,降低系統的內存,使效率提高。

缺點:提高了系統的複雜度,需要分離出外部狀態和內部狀態,而且外部狀態具有固有化的性質,不應該隨着內部狀態的變化而變化,否則會造成系統的混亂。

使用場景: 1、系統有大量相似對象。 2、需要緩衝池的場景。

注意事項: 1、注意劃分外部狀態和內部狀態,否則可能會引起線程安全問題。 2、這些類必須有一個工廠對象加以控制。

實現:結合上一篇文章,假如要生產500個螺絲和500個螺帽。  如果直接循壞創建(new),那麼將會有 1000個零件,對應的內存地址也是不同的。 這樣會極大耗費內存。  但如果在工廠裏有一個池子(享元池)。那麼 螺絲和螺帽則只會每個創建一次,後邊的499都存享元池中取出來,同樣1000個零件,則只有2種內存地址。 以爲其他的都是複用,內存空間都一樣。所以說此模式適用於結果注重單一結果的情況。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章