好程式設計師分享java設計模式之享元模式
好程式設計師分享 java設計模式之享元模式,享元模式有點類似於單例模式,都是隻生成一個物件被共享使用。享元模式主要目的就是讓多個物件實現共享,減少不必要的記憶體消耗,將多對同一物件的訪問集中起來,不必為每個訪問者建立一個單獨的物件,以此來降低記憶體的消耗。
在享元模式結構中包含如下幾個角色:
Flyweight(抽象享元類):通常是一個介面或抽象類,在抽象享元類中宣告瞭具體享元類公共的方法,這些方法可以向外界提供享元物件的內部資料(內部狀態),同時也可以透過這些方法來設定外部資料(外部狀態)。
ConcreteFlyweight(具體享元類):它實現了抽象享元類,其例項稱為享元物件;在具體享元類中為內部狀態提供了儲存空間。通常我們可以結合單例模式來設計具體享元類,為每一個具體享元類提供唯一的享元物件。
UnsharedConcreteFlyweight(非共享具體享元類):並不是所有的抽象享元類的子類都需要被共享,不能被共享的子類可設計為非共享具體享元類;當需要一個非共享具體享元類的物件時可以直接透過例項化建立。
FlyweightFactory(享元工廠類):享元工廠類用於建立並管理享元物件,它針對抽象享元類程式設計,將各種型別的具體享元物件儲存在一個享元池中,享元池一般設計為一個儲存“鍵值對”的集合(也可以是其他型別的集合),可以結合工廠模式進行設計;當使用者請求一個具體享元物件時,享元工廠提供一個儲存在享元池中已建立的例項或者建立一個新的例項(如果不存在的話),返回新建立的例項並將其儲存在享元池中。
2、享元模式的實現
在享元模式中引入了享元工廠類,享元工廠類的作用在於提供一個用於儲存享元物件的享元池,當使用者需要物件時,首先從享元池中獲取,如果享元池中不存在,則建立一個新的享元物件返回給使用者,並在享元池中儲存該新增物件。接下來,實現一個登陸的享元模式。
3、享元模式的優缺點
享元模式優點 ,在於外部狀態相對獨立,使得物件可以在不同的環境中被複用(共享物件可以適應不同的外部環境)。且享元模式可共享相同或相似的細粒度物件,從而減少了記憶體消耗,同時降低了物件建立與垃圾回收的開銷。
享元模式缺點,外部狀態由客戶端儲存,共享物件讀取外部狀態的開銷可能比較大。享元模式要求將內部狀態與外部狀態分離,這使得程式的邏輯複雜化,同時也增加了狀態維護成本。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2645442/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師精講 java設計模式—享元模式程式設計師Java設計模式
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- Java設計模式之(十一)——享元模式Java設計模式
- Java學設計模式之享元模式Java設計模式
- 設計模式之享元模式設計模式
- 11.java設計模式之享元模式Java設計模式
- Java設計模式11——享元模式Java設計模式
- Java設計模式之七 —– 享元模式和代理模式Java設計模式
- 設計模式----享元模式設計模式
- 設計模式-享元模式設計模式
- C#設計模式之享元模式C#設計模式
- 我學設計模式 之 享元模式設計模式
- Java設計模式(13):享元模式(蠅量模式)Java設計模式
- javascript設計模式享元模式JavaScript設計模式
- 設計模式(十七):享元模式設計模式
- Java進階篇設計模式之七 —– 享元模式和代理模式Java設計模式
- Java進階篇設計模式之七 ----- 享元模式和代理模式Java設計模式
- 設計模式系列13–享元模式設計模式
- 極簡設計模式-享元模式設計模式
- Python設計模式-享元模式Python設計模式
- iOS設計模式 (四)享元模式iOS設計模式
- 軟體設計模式————(享元模式)設計模式
- 每天一個設計模式之享元模式設計模式
- 軟體設計模式系列之十三——享元模式設計模式
- 設計模式(十六)----結構型模式之代理享元模式設計模式
- C#設計模式(13)——享元模式C#設計模式
- 設計模式系列13--享元模式設計模式
- 通俗 Python 設計模式——享元模式Python設計模式
- 設計模式之:享元模式FlyweightPattern的實現設計模式
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 《設計模式四》觀察、組合、享元模式設計模式
- 設計模式【10】-- 順便看看享元模式設計模式
- 設計模式 | 享元模式及典型應用設計模式
- 10、Python與設計模式–享元模式Python設計模式
- 12.享元模式設計思想模式
- 好程式設計師Java培訓分享Java設計模式的六大原則程式設計師Java設計模式
- 設計模式--享元模式FlyWeight(結構型)設計模式
- C#設計模式系列:享元模式(Flyweight)C#設計模式