摘要:代理模式原文地址更多設計模式系列教程更多免費教程博主按每天一個設計模式旨在初步領會設計模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實現。代理模式優缺點代理模式有高度解耦對象保護易修改等優點。
代理模式·原文地址
更多《設計模式系列教程》
更多免費教程
博主按:《每天一個設計模式》旨在初步領會設計模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)兩種語言實現。誠然,每種設計模式都有多種實現方式,但此小冊只記錄最直截了當的實現方式 :)0. 項目地址
本節課代碼
《每天一個設計模式》地址
1. 什么是代理模式?代理模式的定義:為一個對象提供一種代理以方便對它的訪問。
代理模式可以解決避免對一些對象的直接訪問,以此為基礎,常見的有保護代理和虛擬代理。保護代理可以在代理中直接拒絕對對象的訪問;虛擬代理可以延遲訪問到真正需要的時候,以節省程序開銷。
2. 代理模式優缺點代理模式有高度解耦、對象保護、易修改等優點。
同樣地,因為是通過“代理”訪問對象,因此開銷會更大,時間也會更慢。
3. 代碼實現 3.1 python3 實現class Image: def __init__(self, filename): self.filename = filename def load_img(self): print("finish load " + self.filename) def display(self): print("display " + self.filename) # 借助繼承來實現代理模式 class ImageProxy(Image): def __init__(self, filename): super().__init__(filename) self.loaded = False def load_img(self): if self.loaded == False: super().load_img() self.loaded = True def display(self): return super().display() if __name__ == "__main__": proxyImg = ImageProxy("./js/image.png") # 只加載一次,其它均被代理攔截 # 達到節省資源的目的 for i in range(0,10): proxyImg.load_img() proxyImg.display()3.2 javascript 實現
main.js :
// main.js const myImg = { setSrc(imgNode, src) { imgNode.src = src; } }; // 利用代理模式實現圖片懶加載 const proxyImg = { setSrc(imgNode, src) { myImg.setSrc(imgNode, "./image.png"); // NO1. 加載占位圖片并且將圖片放入元素 let img = new Image(); img.onload = () => { myImg.setSrc(imgNode, src); // NO3. 完成加載后, 更新 元素中的圖片 }; img.src = src; // NO2. 加載真正需要的圖片 } }; let imgNode = document.createElement("img"), imgSrc = "https://upload-images.jianshu.io/upload_images/5486602-5cab95ba00b272bd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp"; document.body.appendChild(imgNode); proxyImg.setSrc(imgNode, imgSrc);
main.html :
4. 參考每天一個設計模式 · 代理模式
代理模式
《JavaScript 設計模式和開發實踐》
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/99415.html
摘要:代理模式原文地址更多設計模式系列教程更多免費教程博主按每天一個設計模式旨在初步領會設計模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語言實現。代理模式優缺點代理模式有高度解耦對象保護易修改等優點。 代理模式·原文地址 更多《設計模式系列教程》 更多免費教程 博主按:《每天一個設計模式》旨在初步領會設計模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)...
摘要:受知乎文章和設計模式之禪的啟發,我也來搞一篇腦洞小開的文章由標題可知,這篇文章是寫給我女朋友看的。于是這就讓經紀人對粉絲說只有萬,我才會寫代碼。 前言 只有光頭才能變強 回顧前面: ThreadLocal就是這么簡單 多線程三分鐘就可以入個門了! 多線程基礎必要知識點!看了學習多線程事半功倍 Java鎖機制了解一下 AQS簡簡單單過一遍 Lock鎖子類了解一下 線程池你真不來了解一下...
摘要:虛擬代理和函數節流的思想是一樣的,將用戶對性能的的傷害降低到最低。虛擬代理上面的保護代理闡述了怎樣去拒絕請求,而虛擬代理的原則是收集請求來者不拒他的出發點和保護代理的是一樣的,都是為了節省請求的開支。 Whats the proxy pattern? 代理模式其實就是將違反單一性原則的類給抽離出來,盡量滿足開放和封閉的原則。 相當于一個類的行為只是一種,但是你可以給這個類添加額外的行為...
摘要:適配器模式將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。 1、常用設計模式 單例模式:懶漢式、餓漢式、雙重校驗鎖、靜態加載,內部類加載、枚舉類加載。保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。 代理模式:動態代理和靜態代理,什么時候使用...
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
閱讀 3018·2023-04-25 20:22
閱讀 3335·2019-08-30 11:14
閱讀 2590·2019-08-29 13:03
閱讀 3178·2019-08-26 13:47
閱讀 3218·2019-08-26 10:22
閱讀 1263·2019-08-23 18:26
閱讀 608·2019-08-23 17:16
閱讀 1908·2019-08-23 17:01