天天看點

Head First設計模式之享元模式(蠅量模式)

享元模式(Flyweight Pattern)主要用于減少建立對象的數量,以減少記憶體占用和提高性能。這種類型的設計模式屬于結構型模式,它提供了減少對象數量進而改善應用所需的對象結構的方式。

享元模式嘗試重用現有的同類對象,如果未找到比對的對象,則建立新對象。我們将通過建立 5 個對象來畫出 20 個分布于不同位置的圓來示範這種模式。由于隻有 5 種可用的顔色,是以 color 屬性被用來檢查現有的 Circle 對象。

Head First設計模式之享元模式(蠅量模式)

 1、系統中有大量對象。

2、這些對象消耗大量記憶體。

3、這些對象的狀态大部分可以外部化。

4、這些對象可以按照内蘊狀态分為很多組,當把外蘊對象從對象中剔除出來時,每一組對象都可以用一個對象來代替。

5、系統不依賴于這些對象身份,這些對象是不可分辨的。

優點:

1)享元模式的優點在于它可以極大減少記憶體中對象的數量,使得相同對象或相似對象在記憶體中隻儲存一份。

2)享元模式的外部狀态相對獨立,而且不會影響其内部狀态,進而使得享元對象可以在不同的環境中被共享。

缺點:

1)享元模式使得系統更加複雜,需要分離出内部狀态和外部狀态,這使得程式的邏輯複雜化。

2)為了使對象可以共享,享元模式需要将享元對象的狀态外部化,而讀取外部狀态使得運作時間變長。

繼續閱讀