摘要:代理模式代理模式是為一個對象提供一個代用品或者占位符以便控制對它的訪問引入代理模式,其實是為了實現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計原則。
代理模式
代理模式是為一個對象提供一個代用品或者占位符, 以便控制對它的訪問
引入代理模式,其實是為了實現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計原則。
虛擬代理
將一些開銷很大的對象, 延遲到正真需要的時候執(zhí)行
// 針對大圖 增加loading圖 // 創(chuàng)建 img var myImage = (function () { var imgNode = document.createElement("img"); document.body.appendChild(imgNode); return { // 直接設(shè)置 img 的src setSrc: function (src) { imgNode.src = src; } } })(); // 代理對象 var proxyImage = (function () { var img = new Image(); img.onload = function () { // 在代理中等到圖片加載完在設(shè)置正真的圖片地址 myImage.setSrc(this.src); }; return { setSrc: function (src) { myImage.setSrc("./loading.jpg"); img.src = src; } } })(); proxyImage.setSrc("https://xxx.com/realImage.png")
緩存代理
可以為一些開銷大的運算結(jié)果提供暫時的存儲
// 體現(xiàn)了 單一職責(zé)原則, // 原函數(shù) var multi = function () { var a = 1; for (var i = 0, l = arguments.length; i < l; i++) { a = a * arguments[i]; } console.log(a); return a; } // 代理函數(shù) var proxyMulti = (function () { var cache = {}; return function () { var args = Array.prototype.join.call(arguments, ","); if (args in cache) { return cache[args]; } return cache[args] = multi.apply(this, arguments); } })(); proxyMulti(1, 2, 3, 4, 5); proxyMulti(1, 2, 3, 4, 5);
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109255.html
摘要:單例模式單例模式就是保證一個類僅有一個實例并提供一個訪問它的全局訪問點其最大的特點就是永遠(yuǎn)只返回一個實例實例通過來獲取類的唯一對象其缺點也明顯增加了類的不透明性透明的單例模式最終會被返回使用代理實現(xiàn)單例模式將負(fù)責(zé)管理單例的邏輯移到了代理類中 單例模式 單例模式 就是保證一個類僅有一個實例, 并提供一個訪問它的全局訪問點. 其最大的特點就是 永遠(yuǎn)只返回一個實例 var Sin...
摘要:保護代理和虛擬代理保護代理當(dāng)有許多需求要向某對象發(fā)出一些請求時,可以設(shè)置保護代理,通過一些條件判斷對請求進(jìn)行過濾。虛擬代理在程序中可以能有一些代價昂貴的操作。而虛擬代理是最常用的一種代理模式。 代理模式 代理模式是為一個對象提供一個代用品或占位符,以便控制對它的訪問。 保護代理和虛擬代理 保護代理:當(dāng)有許多需求要向某對象發(fā)出一些請求時,可以設(shè)置保護代理,通過一些條件判斷對請求進(jìn)行過濾。...
摘要:命令模式指的是一個執(zhí)行某些特定事情的指令設(shè)計模式的主題總是把不變的事物和變化的事物分離開來在中函數(shù)作為一等對象所以命令模式其實是回調(diào)函數(shù)的一個面向?qū)ο蟮奶娲吩O(shè)置命令命令集合刷新菜單界面命令觸發(fā)條件接受者綁定命令 命令模式 指的是一個執(zhí)行某些特定事情的指令 設(shè)計模式的主題: 總是把不變的事物和變化的事物分離開來 在javascript 中, 函數(shù)作為一等對象, 所以, 命令模式其實是...
摘要:迭代器模式順序訪問一個對象的對象的內(nèi)部可分為內(nèi)部迭代器和外部迭代器內(nèi)部迭代器就是常見的或者外部迭代器實現(xiàn)了簡單實現(xiàn) 迭代器模式 順序訪問一個對象的 對象的內(nèi)部 可分為內(nèi)部迭代器 和 外部迭代器 內(nèi)部迭代器 就是常見的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...
閱讀 2643·2021-11-23 09:51
閱讀 903·2021-09-24 10:37
閱讀 3627·2021-09-02 15:15
閱讀 1971·2019-08-30 13:03
閱讀 1892·2019-08-29 15:41
閱讀 2637·2019-08-29 14:12
閱讀 1436·2019-08-29 11:19
閱讀 3312·2019-08-26 13:39