摘要:目錄代理模式為什么使用代理模式應用實例代理模式對于代理模式,和委托方式分不開,感覺委托和代理沒有什么區別,而委托卻不被稱做一個設計模式,今天再次看代理模式,才有所理解。回到正題代理模式為對象提供一個替身或者是占一個位子,從而控制對其訪問。
目錄
代理模式
為什么使用代理模式
應用實例
代理模式對于代理模式,和委托方式分不開,感覺委托和代理沒有什么區別,而委托卻不被稱做一個設計模式,今天再次看代理模式,才有所理解。從這一點也發現了一個問題,有些時候,我們再去看一本技術的書的時候,第一遍有些概念往往晦澀難懂,特別是在未看設計模式去看《Thinking in Java》的時候,當時看的就會有點小焦慮,看不下去,想跳過去吧,有會有種自我譴責的意識出現,現在看來對于一些概念不懂的甚至是一知半解的,其實沒有必要去死扣,跳過去接著看,然后等著再回過頭看一遍,很多概念就不會讓你感覺像是第一次那樣晦澀,同時對于一些好書,即使第一次看過去,感覺沒什么問題,在回讀一遍,你還是會發現會有不同的理解和感悟的。
回到正題
代理模式:為對象提供一個替身或者是占一個位子,從而控制對其訪問。
代理VS委托*
而我們常用的委托呢?是在類的內部創建一個局部變量,用來表示該對象,然后通過某種方法或者是構造函數將實例注入,這看起來確實是給對象占了一個位子,但是注意代理模式的主要目的是用來控制對其訪問,而我們使用的委托模式是起不到的這個作用的,因為實例都是通過方法從外部注入進來的,又談何對其在類內部進行訪問控制。
當我們有一個數據集,不同的用戶對該數據集有不同的權限,因此如果我們對控制數據集的對象進行權限的設定以此來控制我們數據的存取,從而對我們的數據起到一個保護的作用。
主題抽象類 abstract public class Subject { abstract public void request(); } 真實主題類 public class RealSubject extends Subject { public RealSubject() { } public void request() { System.out.println( " From real subject. " ); } } 代理類 public class ProxySubject extends Subject { private RealSubject realSubject; // 以真實角色作為代理角色的屬性 public ProxySubject() { } public void request() { // 該方法封裝了真實對象的request方法 preRequest(); if ( realSubject == null ) { realSubject = new RealSubject(); } realSubject.request(); // 此處執行真實對象的request方法 postRequest(); }
通過一個代理類,將我們真實的實例作為一個屬性,然后在代理類中執行相應的操作。有什么用途呢,比如上面某一個主題的一個方法并不是對沒一個用戶都開發權限的,所以在進行操作之前,我們要對該權限進行一個判斷,這樣我們可以在代理類中進行一個判斷,同時還可以在執行完方法之后進行一下其它的操作。
應用實例現實中的應用的比較多的有遠程代理,本地的對象,在服務端還有一個對象,服務端對對象執行的操作,本地端就會執行,但是礙于對其了解不深,也咩有拿這個來舉例子,實際開發中用到代理的還有很多地方,比如
防火墻代理:對網絡資源進行保護,防止惡意侵害
緩存代理:為開銷大的計算結果提供緩存
等等,
下篇更模板方法,對于模板方法和鉤子方法通過Android的View相關進行舉例。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64608.html
摘要:我們今天也來做一個萬能遙控器設計模式適配器模式將一個類的接口轉換成客戶希望的另外一個接口。今天要介紹的仍然是創建型設計模式的一種建造者模式。設計模式的理論知識固然重要,但 計算機程序的思維邏輯 (54) - 剖析 Collections - 設計模式 上節我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進行操作,第二類是返回一個容器接口對象,上節我們介紹了...
摘要:受知乎文章和設計模式之禪的啟發,我也來搞一篇腦洞小開的文章由標題可知,這篇文章是寫給我女朋友看的。于是這就讓經紀人對粉絲說只有萬,我才會寫代碼。 前言 只有光頭才能變強 回顧前面: ThreadLocal就是這么簡單 多線程三分鐘就可以入個門了! 多線程基礎必要知識點!看了學習多線程事半功倍 Java鎖機制了解一下 AQS簡簡單單過一遍 Lock鎖子類了解一下 線程池你真不來了解一下...
閱讀 885·2021-10-13 09:39
閱讀 3536·2021-09-26 10:16
閱讀 2875·2019-08-30 15:54
閱讀 1051·2019-08-30 14:22
閱讀 2894·2019-08-29 15:39
閱讀 3261·2019-08-27 10:52
閱讀 816·2019-08-26 13:59
閱讀 1711·2019-08-26 12:20