(十二)享元模式

2021-10-02 21:46:56 字數 700 閱讀 9515

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 運用共享技術有效地支援大量細粒度的物件。如果要做三個產品展示 三個部落格的 相當於是六個 類的例項,每乙個 都需要乙個對應的伺服器資源,而本質上他們都是同一套 如果 增多,例項也就隨著增多,這對伺服器的資源浪費得很嚴重,而且都不是屬於高訪問量的 如果整合到乙個 中,共享其相關的 ...