摘要:代理模式代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或者占位符以便控制對(duì)它的訪問(wèn)引入代理模式,其實(shí)是為了實(shí)現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計(jì)原則。
代理模式
代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或者占位符, 以便控制對(duì)它的訪問(wèn)
引入代理模式,其實(shí)是為了實(shí)現(xiàn)單一職責(zé)的面向?qū)ο笤O(shè)計(jì)原則。
虛擬代理
將一些開(kāi)銷很大的對(duì)象, 延遲到正真需要的時(shí)候執(zhí)行
// 針對(duì)大圖 增加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; } } })(); // 代理對(duì)象 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")
緩存代理
可以為一些開(kāi)銷大的運(yùn)算結(jié)果提供暫時(shí)的存儲(chǔ)
// 體現(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109255.html
摘要:?jiǎn)卫J絾卫J骄褪潜WC一個(gè)類僅有一個(gè)實(shí)例并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)其最大的特點(diǎn)就是永遠(yuǎn)只返回一個(gè)實(shí)例實(shí)例通過(guò)來(lái)獲取類的唯一對(duì)象其缺點(diǎn)也明顯增加了類的不透明性透明的單例模式最終會(huì)被返回使用代理實(shí)現(xiàn)單例模式將負(fù)責(zé)管理單例的邏輯移到了代理類中 單例模式 單例模式 就是保證一個(gè)類僅有一個(gè)實(shí)例, 并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn). 其最大的特點(diǎn)就是 永遠(yuǎn)只返回一個(gè)實(shí)例 var Sin...
摘要:保護(hù)代理和虛擬代理保護(hù)代理當(dāng)有許多需求要向某對(duì)象發(fā)出一些請(qǐng)求時(shí),可以設(shè)置保護(hù)代理,通過(guò)一些條件判斷對(duì)請(qǐng)求進(jìn)行過(guò)濾。虛擬代理在程序中可以能有一些代價(jià)昂貴的操作。而虛擬代理是最常用的一種代理模式。 代理模式 代理模式是為一個(gè)對(duì)象提供一個(gè)代用品或占位符,以便控制對(duì)它的訪問(wèn)。 保護(hù)代理和虛擬代理 保護(hù)代理:當(dāng)有許多需求要向某對(duì)象發(fā)出一些請(qǐng)求時(shí),可以設(shè)置保護(hù)代理,通過(guò)一些條件判斷對(duì)請(qǐng)求進(jìn)行過(guò)濾。...
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書(shū)分享。本篇按照書(shū)里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書(shū)里的一些問(wèn)題。將會(huì)討論安全的類型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話題。1. 安全的類型檢測(cè)...
摘要:命令模式指的是一個(gè)執(zhí)行某些特定事情的指令設(shè)計(jì)模式的主題總是把不變的事物和變化的事物分離開(kāi)來(lái)在中函數(shù)作為一等對(duì)象所以命令模式其實(shí)是回調(diào)函數(shù)的一個(gè)面向?qū)ο蟮奶娲吩O(shè)置命令命令集合刷新菜單界面命令觸發(fā)條件接受者綁定命令 命令模式 指的是一個(gè)執(zhí)行某些特定事情的指令 設(shè)計(jì)模式的主題: 總是把不變的事物和變化的事物分離開(kāi)來(lái) 在javascript 中, 函數(shù)作為一等對(duì)象, 所以, 命令模式其實(shí)是...
摘要:迭代器模式順序訪問(wèn)一個(gè)對(duì)象的對(duì)象的內(nèi)部可分為內(nèi)部迭代器和外部迭代器內(nèi)部迭代器就是常見(jiàn)的或者外部迭代器實(shí)現(xiàn)了簡(jiǎn)單實(shí)現(xiàn) 迭代器模式 順序訪問(wèn)一個(gè)對(duì)象的 對(duì)象的內(nèi)部 可分為內(nèi)部迭代器 和 外部迭代器 內(nèi)部迭代器 就是常見(jiàn)的 forEach(), 或者 $.each() function forEach(arr, callback) { var i = 0, len...
閱讀 2627·2021-11-23 09:51
閱讀 860·2021-09-24 10:37
閱讀 3611·2021-09-02 15:15
閱讀 1962·2019-08-30 13:03
閱讀 1881·2019-08-29 15:41
閱讀 2624·2019-08-29 14:12
閱讀 1424·2019-08-29 11:19
閱讀 3301·2019-08-26 13:39