public
inte***ce
flyweight
public
class
concreteflyweight
implements
flyweight
public string getname()
public
void
setname
(string name)
public
void
execute()
}public
class
flywenghtfactory
return flyweight;
}}
使用時,從工廠中拿某個物件,如果拿不到則新增進去再拿到
然後執行該物件的功能邏輯
其實這就是在**中做了乙個這個物件的map快取池子,相同的物件不會重複的new,會直接從map中取到
flyweight flyweight = flyweightfactory.
get(
"物件1"
);flyweight.
execute()
;
享元一般用於,系統中某些需要快取的物件,數量比較少,不需要用redis這種重型的快取,就上這種map快取
需要注意的是執行緒安全問題
設計模式 十二 享元模式
設計模式 一 設計六大原則 設計模式 二 單例模式的七種寫法 設計模式 三 建造者模式 設計模式 四 簡單工廠模式 設計模式 五 觀察者模式 設計模式 六 模式 設計模式 七 裝飾模式 設計模式 八 外觀模式 設計模式 九 模版方法模式 設計模式 十 工廠方法模式 設計模式 十一 策略模式 設計模式...
設計模式(十二)享元模式
如果系統中可能存在大量相同的物件,那麼我們可以建立快取池之類的東西,將這些重複物件進行復用。這種設計模式就是享元模式。假設有乙個遊戲,裡面需要汽車和電單車兩種載具。我們希望這些載具可以在遊戲中復用,而不是每次都建立新物件。所以這個例子就可以使用享元模式來做。首先是汽車和電單車的抽象。我們使用visi...
(十二)設計模式 享元模式
flyweight 運用共享技術有效地支援大量細粒度的物件。如果要做三個產品展示 三個部落格的 相當於是六個 類的例項,每乙個 都需要乙個對應的伺服器資源,而本質上他們都是同一套 如果 增多,例項也就隨著增多,這對伺服器的資源浪費得很嚴重,而且都不是屬於高訪問量的 如果整合到乙個 中,共享其相關的 ...