設計優化之享元模式

2021-09-28 08:30:24 字數 1009 閱讀 2698

何為享元模式,大家不要被這個陌生的詞彙所嚇倒,其實筆者感覺這個是最容易理解的,下面請看筆者分析。

享元模式:

所謂享元模式,就是相同物件,在記憶體中之存在乙份,大家都共享著乙個例項物件。**體現上很像工廠模式,通過工廠找到這個物件,如果存在就直接獲取,如果不存在就建立同時,儲存,方便下次直接獲取。以下是**

/**

* created by mac on 2017/6/4.

*/public inte***ce iflyweight

public class userflyweight implements iflyweight 

public string getname()

}

/*

* created by mac on 2017/6/4.

*/public class flywightfactory

return result;

}}

在flyweight模式中,由於要產生各種各樣的物件,所以在flyweight(享元)模式中常出現factory模式。flyweight的內部狀態是用來共享的,flyweight factory負責維護乙個物件儲存池(flyweight pool)來存放內部狀態的物件。flyweight模式是乙個提高[程式]效率和效能的模式,會大大加快程式的執行速度.

public class main 

long end=system.currenttimemillis();

system.out.format("耗時:%d,ms,map例項數量:%d",(end-start),flywightfactory.fly.size());

//耗時:63,ms,map例項數量:3

}}

可以看到雖然從裡面取了10萬次,但是只用了63ms,切對於這些相同物件,記憶體中之存在唯一的乙份

設計模式之享元

設計模式之享元模式 flyweight 何謂享元 首先我們解釋一下什麼是享元?這裡所說的享元出自大名鼎鼎的設計模式一書,英文 flyweight 中文由誰翻譯成 享元 一詞已不可考,但不得不說,這個翻譯實在是精彩 望文即可生意,比起洋鬼子的 flyweight 高明太多。這不免讓我等程式設計師被洋鬼...

設計模式之享元模式

1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...

設計模式之 享元模式

享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...