JavaScript之享元模式例項 檔案上次優化

2021-08-18 10:26:09 字數 1050 閱讀 5537

一、享元模式是一種用於效能優化的模式,主要優化方式為,若系統中因為建立了大量類似的物件而導致記憶體占用過高,則可以考慮使用享元模式實現。

二、例項說明:

如果在瀏覽器中上傳檔案,若使用常規寫法, 每上傳乙個檔案,就會建立乙個例項物件;如果上傳2000個檔案,那就有2000個物件,瀏覽器很可能出現假死狀態。這種情況下,我們考慮適應享元模式。

三、例項:

var upload = function( uploadtype );

upload.prototype.delfile = function( id )

if( window.confirm('確定要刪除該檔案嗎?' + this.filename ))

};var uploadfactory = (function();

return

return createdflyweightobjs[uploadtype] = new upload(uploadtype);}}

})();

var uploadmanager = (function();

return;

return flyweightobj;

},setexternalstate: functon( id, flyweightobj )}}

})();

然後需要寫乙個觸發上傳動作的startupload函式:

var id = o;

window.startupload = function( uploadtype, files )

};

最後呼叫,如下:

startupload( 'plugin', [,,

]);startupload( 'flash', [,,

]);

四、解釋:

呼叫時,有六個物件,但只有兩個型別(plugin和flash),我們通過享元模式,在建立物件時,只有兩個,如果上面提到的上傳2000個檔案,利用上面的**,同樣只建立兩個物件,那麼這就很好的解決了瀏覽器崩潰假死的問題。

javascript 享元模式 flyweight

適應條件 乙個程式中使用了大量的相似物件 造成大的記憶體開銷 物件的大多數狀態都可以變為外部狀態 剝離出物件的外部狀態之後,可以使用相對較少的共享物件取代大量物件 上傳檔案的例子 index.html js upload.js function upload uploadtype var uploa...

設計模式之享元模式

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

設計模式之 享元模式

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