摘要:代理模式的介紹代理模式是中常見,也是重要的一種模式,比如中的就是代理模式的一種應用。相對于簡單粗暴地直接訪問對象調用對象的方法,使用代理模式可以在對象的使用時,進行預處理和事后處理等。
1.代理模式的介紹
代理模式是java中常見,也是重要的一種模式,比如spring中的aop就是代理模式的一種應用。
那么代理模式究竟有什么作用?代理模式就是“控制和管理對象的訪問”。相對于簡單粗暴地直接訪問對象、調用對象的方法,使用代理模式可以在對象的使用時,進行預處理和事后處理等。比如權限控制、日志記錄。當然你可以直接在對象里,做這些操作,但是這樣耦合性太高,不利于代碼的維護。
2.如何使用代理模式
一個實現代理模式的demo,主要需要3個類
1)委托類接口
//委托類接口 public interface TestService { void business(); }
2)委托類的實現
//委托類的實現類 public class TestImplement implements TestService{ @Override public void business() { System.out.println("do the busniess"); } }
3)代理類
//委托類的代理類,注意需要implements 委托類 public class StaticProxy implements TestService{ private TestService testService; public StaticProxy(TestService testService) { this.testService = testService; } @Override public void business() { //可以做一些預處理,比如數據處理、權限控制等 System.out.println("before invoke,I can do something."); testService.business(); //可以做一些事后處理,比如執行結果的記錄,事務提交等 System.out.println("before invoke,I can do something."); } }
測試方法:
TestService service = new TestImplement(); StaticProxy proxy = new StaticProxy(service); proxy.business();
測試輸出結果:
before invoke,I can do something.
do the busniess
before invoke,I can do something.
以上就是代理的簡單的一種實現,我們也叫靜態代理。因為這樣的實現方式,需要為每個委托類都寫代理類,會產生大量的代理類,也不利于代碼的復用和項目的解耦,所以我們會使用動態代理去解決這些問題。關于動態代理的詳細介紹會在下篇中繼續大話。
這是本人對于代理模式的一些理解,十分歡迎大家的指教和討論。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70251.html
摘要:抽象工廠模式是為了處理對象具有等級結構以及對象族的問題。單例設計模式單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例,這個類成為單例類。 導語:設計模式是無數碼農前人在實際的生產項目中經過不斷的踩坑、爬坑、修坑的經歷總結出來的經驗教訓,經過抽象之后表達成的概念。能夠幫助后來的設計者避免重復同樣的錯誤或者彎路。我也抽空整理了一下設計模式,用自己的話總結了一下,自認...
摘要:從使用到原理學習線程池關于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實現在軟件開發中,分散于應用中多出的功能被稱為橫切關注點如事務安全緩存等。 Java 程序媛手把手教你設計模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經風雨慢慢變老,回首走過的點點滴滴,依然清楚的記得當初愛情萌芽的模樣…… Java 進階面試問題列表 -...
摘要:當然,除了讓我們顯得更加專業之外,在自己所學習或者工作的項目中,適當合理的使用設計模式,能夠給項目帶來很大的好處。 簡單說兩句 本文首發公眾號【一名打字員】 對不住各位老鐵了,年前說好要更幾波JAVA的東西,又偷懶了,沒辦法,在這里用小錘錘偷偷錘了自己幾下。由于工作原因,更新時間不定,各位老鐵有問題可以私聊我哈。 對于初學者或者是正在向中高級的Java程序猿(打字員)來說,時刻梳理自己...
閱讀 2673·2021-11-11 16:54
閱讀 3671·2021-08-16 10:46
閱讀 3451·2019-08-30 14:18
閱讀 3045·2019-08-30 14:01
閱讀 2731·2019-08-29 14:15
閱讀 2016·2019-08-29 11:31
閱讀 3093·2019-08-29 11:05
閱讀 2597·2019-08-26 11:54