java設計模式 享元模式(結構型模式)

2021-09-12 12:01:28 字數 517 閱讀 2504

在物件導向程式設計過程中,有時會面臨要建立大量相同或相似物件例項的問題。建立那麼多的物件將會耗費很多的系統資源,它是系統效能提高的乙個瓶頸。例如,圍棋和五子棋中的黑白棋子,影象中的座標點或顏色,區域網中的路由器、交換機和集線器,教室裡的桌子和凳子等。這些物件有很多相似的地方,如果能把它們相同的部分提取出來共享,則能節省大量的系統資源,這就是享元模式的產生背景。

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

享元模式的主要優點是:相同物件只要儲存乙份,這降低了系統中物件的數量,從而降低了系統中細粒度物件給記憶體帶來的壓力。

其主要缺點是:

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

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

Java設計模式(12)結構型 享元模式

享元模式是指使用共享物件,用來盡可能減少記憶體使用量以及分享資訊給盡可能多的相似物件 它適合用於只是因重複而導致使用無法令人接受的大量記憶體的大量物件。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部資料結構,當需要使用時再將它們傳遞給享元。使用享元可以節省記憶體的開銷,特別適合處理大量細粒...

設計模式 結構型 享元模式

如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時就應該考慮使用 還有物件的大多數狀態可以外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件。public class flyweighttest class flyweightfactory publi...

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

享元模式就是將大量物件共有的部分抽取出來,供這些物件共享使用。而這些元素不同的部分,會以引數的形式注入具體享元的相關方法中。ps 其實感覺有點像sync.pool,本質都是快取共享物件,降低記憶體消耗和減輕gc壓力,但是仔細看下來還是和sync.pool有點區別的 快取共享物件,降低記憶體消耗 在遊...