設計模式 結構型模式 享元模式

2021-10-16 22:44:48 字數 1022 閱讀 2740

運用共享技術來有效地支援大量細粒度物件的復用。它通過共享已經存在的物件來大幅度減少需要建立的物件數量、避免大量相似類的開銷,從而提高系統的資源利用率。

本質是快取共享物件,降低記憶體消耗。

優點相同物件只要儲存乙份,以此降低系統中物件的數量,從而降低系統中細粒度物件給記憶體帶來的壓力。

缺點為了使物件可以共享,需要將一些不能共享的狀態外部化,這將增加程式的複雜性;

讀取享元模式的外部狀態會使得執行時間稍微變長。

結構享元模式的定義提出了兩個要求:細粒度和共享物件。這些物件的資訊可以分為兩個部分: 內部狀態和外部狀態。

主要角色:

類圖:

實現

class

unsharedconcreteflyweight

// info 的 get、set 方法

}

inte***ce

flyweight

class

concreteflyweight

implements

flyweight

public

void

operation

(unsharedconcreteflyweight outstate)

}

class

flyweightfactory

else

return flyweight;

}}

系統中存在大量相同或相似的物件,這些物件耗費大量的記憶體資源;

大部分的物件可以按照內部狀態進行分組,且可見不同部分外部化,這樣每乙個組只需儲存乙個內部狀態;

由於享元模式需要額外維護乙個儲存享元的資料結構,所以應當在有足夠多的享元例項時才值得使用享元模式。

單純享元模式和復合享元模式:

設計模式 結構型模式 享元模式

圍棋棋子類 抽象享元類 abstract class igochessman 黑色棋子類 具體享元類 class blackigochessman extends igochessman 白色棋子類 具體享元類 class whiteigochessman extends igochessman 圍...

設計模式 結構型模式 享元模式

享元模式 使用同乙個物件,有一些物件不想重複建立,想使用乙個 與單例的區別 建立物件是自身控制,還是交由乙個工廠控制 string字串的記憶體分配使用了享元模式 字元父類 public abstract class baseword l類 public class l baseword public...

結構型模式 享元模式

七大結構型模式之六 享元模式。姓名 享元模式 英文名 flyweight pattern 價值觀 共享富貴 個人介紹 use sharing to support large numbers of fine grained objects efficiently.使用共享物件可有效地支援大量的細粒度...