簡體中文 | 繁體中文

大話設計模式-----第91章


一號人物 無敵村醫系統 極品姐夫 請回答2013 冷麵魔帝:廢柴庶女要逆天 名門小妻子:老公,約麼 當大神遇到大神 總裁的臨時夫人 霸道總裁,誘妻拐娃 天武乾坤 異常之徵兆 最拽寶寶:我媽咪是黑道大小姐 衍龍道 重生之超級衙內 締約吧,妖狐大人 傀儡 鬼差夫妻 妖妃天下之寵妻無毒 合租戀人:惡魔的呆萌女孩 頂級修車手
第91章

大B:“你知道享元模式有哪些特徵嗎?”

小A:“享元模式包括有單純享元模式和複合享元模式。他們都有不同的角色不同的特徵。”

大B:下面我來具體說說。

首先單純享元模式,它有抽象享元角色、具體享元角色、享元工廠角、客戶端角色。

抽象享元角色:所有的具體享元類的超類,規定出需要實現的公共介面。那些需要外蘊狀態的操作可以透過方法的引數傳入。

具體享元角色:實現抽象享元角色所規定的介面。如果有內蘊狀態的話,必須負責為內蘊狀態提供儲存空間。享元物件的內蘊狀態必須與物件所處的周圍環境無關,從而使得享元物件可以在系統內共享。

享元工廠角色:負責建立和管理享元角色。 本角色必須保證享元物件可以被系統適當地共享。當一個客戶端物件呼叫一個享元物件時,享元工廠角色會檢查系統中是否已經有一個符合要求的享元物件。如果有,享元工廠就提供這個已經有的享元物件,如果沒有,享元工廠建立一個適當的享元物件。

客戶端角色:需要維護一個對所有享元物件的引用。 本角色需要自行儲存所有享元物件的外蘊狀態。

還有就是複合享元模式,它有抽象享元角色、具體享元角色、複合享元角色、享元工廠角、客戶端角色。

抽象享元角色:所有的具體享元類的超類,規定出需要實現的公共介面。那些需要外蘊狀態的操作可以透過方法的引數傳入。抽象享元的介面使得享元變得可能,但是並不強制子類實行共享,因此並非所有的享元物件都是可以共享的。

具體享元角色:實現抽象享元角色所規定的介面。如果有內蘊狀態的話,必須負責為內蘊狀態提供儲存空間。享元物件的內蘊狀態必須與物件所處的周圍環境無關,從而使得享元物件可以在系統內共享。

複合享元角色是由具體享元角色透過複合而成。複合享元角色:複合享元角色所代表的物件是不可以共享的,但是可以分解成多個可以共享的具體享元角色。

享元工廠角色:負責建立和管理享元角色。 本角色必須保證享元物件可以被系統適當地共享。當一個客戶端物件呼叫一個享元物件時,享元工廠角色會檢查系統中是否已經有一個符合要求的享元物件。如果有,享元工廠就提供這個已經有的享元物件,如果沒有,享元工廠建立一個適當的享元物件。

客戶端角色:需要維護一個對所有享元物件的引用。 本角色需要自行儲存所有享元物件的外蘊狀態。

大B:“你說一下享元模式適用於哪些地方?”

小A:“好的。Flyweight模式的有效性很大程度上取決於如何使用它以及在何處使用它。當以下情況都成立時使用Flyweight模式。1、一個應用程式使用了大量的物件。2、完全由於使用大量的物件,造成很大的儲存開銷。3、物件的大多數狀態都可變為外部狀態。4、如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件。5、應用程式不依賴物件標識。”

推薦小說