剛接觸享元的模式的時候其工作機制可能很難理解。我們先對其結構作一概覽,然後再詳細講解各個部分。
享元模式用於減少應用程式所需要的物件的數量。這是通過將物件的內部狀態劃分為記憶體資料和外在資料兩類而實現的。內在資料是指類的內部方法所需要的資訊,沒有這種資料的話類就不能正常運轉。外在資料則是可以從類身上剝離並儲存在其外部的資訊。我們可以將記憶體狀態相同的所有物件替換為同乙個共享物件,用這種方法可以把物件資料減少到不同記憶體狀態的數量。
建立這種共享物件需要使用工廠,而不是普通的建構函式。這樣做可以跟蹤到已經例項化的各個物件,從而僅當所需物件的記憶體狀態不同於已有物件時才建立乙個新物件。物件的外在狀態被儲存在乙個管理器物件中。在呼叫物件的方法時,管理器會把這些外在狀態作為引數傳入。
假設要開發乙個系統,用以代表乙個城市的所有汽車。你需要儲存每一輛汽車的詳細情況及其所有權的詳細情況。當然,你決定把每輛汽車表示為乙個物件:
var car =function(make,model,year,owner,tag,renewdate);
return else;
return ;
calendarday.prototype= );
addevent(this.target,』mouseout,function(e))
tooltip.prototype= ,this.delay);
show:function(),this.delay);
show:function(x,y,text));
addenvet(targetelement,』mouseout,function(e));
gettooltip:function(){
if(storedinstance==null){
storedinstance = newtooltip();
return storedinstance;
1. 外在資料從目標類剝離
2. 建立乙個用來控制該類的例項化的工廠
3. 建立乙個用來儲存外在資料的管理器
設計模式學習筆記 享元模式
享元模式英文叫flyweight pattern。flyweight,應該是乙個來自於拳擊術語,最輕量級,也叫蠅量級。次奧,我看 大話設計模式 這本書的時候,一直錯看成 亨元模式,搞不懂為什麼叫這個名字。現在看清楚了,是享元,共享的享,就比較好理解了。享元模式,就是共享 重用一些現成的物件,免得構造...
《大話設計模式 享元模式》筆記
1 享元模式 flyweight 運用共享技術有效的支援大量細顆粒度的物件。2 享元模式結構圖 3 簡單 實現 flyweight類,它是所有享元類的超類或介面,通過這個介面,flyweight可以接受並作用於外部狀態。public abstract class flyweightconcretef...
設計模式(享元模式)
享元模式是設計模式中少數幾個已提高系統效能為目的模式之一。它的核心思想是 如果系統存在多個 相同的物件,那麼只需要共享一分物件的拷貝,而不必為每一次使用都建立新的物件。當有物件被大量復用時,特別是重量級的物件復用可以使用享元模式來提高系統效能。其優點如下 1.可以節省重複建立物件的開銷,因為被享元模...