摘要:聊完了工廠模式,下面我們來(lái)說(shuō)框架中的另一個(gè)核心設(shè)計(jì)模式代理模式。這里的外賣小哥就相當(dāng)于是我們的代理。主要分為代理和代理。
聊完了工廠模式,下面我們來(lái)說(shuō)Spring框架中的另一個(gè)核心設(shè)計(jì)模式——代理模式(Proxy Pattern)。代理模式
大家可以先不用看概念,先舉個(gè)吃飯的例子:比如說(shuō)我們想吃飯,我們可以選擇自己做飯吃、去飯店吃、叫外賣吃。如果我們選擇自己做著吃,我們就需要去買菜、做飯、吃飯、吃完飯還要刷碗。其實(shí)我們真正想做的就只有吃飯而已,其他的都是與業(yè)務(wù)無(wú)關(guān),但是又不得不做的事。但是我們叫外賣就不一樣了,外賣小哥會(huì)把飯送到我們手里,吃完飯我們也不需要刷碗,直接把包裝扔掉就可以了,我們這里先不討論環(huán)保的問(wèn)題。這里的外賣小哥就相當(dāng)于是我們的代理。代理我們?nèi)ワ埖辏蛘哔I菜的過(guò)程。
有了代理我們就可以更專注于我們真正要做的事--吃飯。代理可以幫我們把一些臟活累活全都干了。
在我們寫代碼過(guò)程中那些是臟活累活呢?
舉個(gè)最簡(jiǎn)單的例子:在JDBC中,當(dāng)我們完成數(shù)據(jù)庫(kù)操作之后,我們還要關(guān)閉一堆Connection、Statement、ResultSet而且每個(gè)都還要判空,還要捕獲異常,要多麻煩有多麻煩。有了代理我們就可以把這些都交給代理去做,自己只做最核心的業(yè)務(wù)邏輯就可以了。
當(dāng)然代理模式還有一些其他的用途:
日志管理;
事務(wù)控制;
權(quán)限管理;
那么有人就會(huì)問(wèn)了:代理模式最終不是還是得我們自己實(shí)現(xiàn)嗎?既然這樣,我們直接將這些邏輯直接寫在代碼內(nèi)部反而更簡(jiǎn)單了呢?
這就涉及到兩種代理模式的分類:靜態(tài)代理和動(dòng)態(tài)代理。雖然他們的理論都是一致的,但是在實(shí)現(xiàn)方式上面卻迥然不同。
靜態(tài)代理: 每當(dāng)我們想代理一個(gè)類,我們就要為這個(gè)類創(chuàng)建一個(gè)相應(yīng)的代理類,讓它在我們的業(yè)務(wù)基礎(chǔ)上做一些瑣碎的事,但是這就像上面的朋友的疑問(wèn)一樣,我們直接將這些邏輯直接寫在代碼內(nèi)部反而更簡(jiǎn)單。但是這并不代表靜態(tài)代理就是一無(wú)是處。至少他做到了,業(yè)務(wù)代碼與其他代碼的分離。并且靜態(tài)代理也是我們理解動(dòng)態(tài)代理的基礎(chǔ)。
動(dòng)態(tài)代理:通過(guò)Java反射的方式為一批具有相同代理邏輯的類動(dòng)態(tài)的創(chuàng)建代理,這樣可以大大的提高了我們的開發(fā)的效率。主要分為JDK代理和CGlib代理。但是它也有缺點(diǎn),那就是實(shí)現(xiàn)太過(guò)于復(fù)雜。
但是Spring框架卻為我們克服了動(dòng)態(tài)代理的缺點(diǎn),使我們不需要在考慮動(dòng)態(tài)代理的編寫,而是為我們自動(dòng)生成動(dòng)態(tài)代理,讓我們開發(fā)變得更加如魚得水。下一篇我們就直奔我們的主題具體聊聊我們的Spring框架,看它是如何做到的。
還是那句話,這里只是記錄我個(gè)人的理解,如果大家需要更加深入的了解可以參考菜鳥教程.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68185.html
摘要:模塊負(fù)責(zé)的所有面向切面的功能。總結(jié)的統(tǒng)一管理,降低了對(duì)象之間的耦合對(duì)主流的框架提供了很好的集成支持提供眾多組件,事務(wù)管理,等具有高度可開放性,開發(fā)者可以自由選擇部分或全部主要使用工廠模式和代理模式。 聊完了Spring框架中最重要的兩種設(shè)計(jì)模式,我們來(lái)看一下Spring框架的模塊和結(jié)構(gòu)圖。 Spring框架的結(jié)構(gòu) 下圖是Spring官方給出的Spring框架的結(jié)構(gòu)圖。 showImg(...
摘要:系統(tǒng)中的各個(gè)微服務(wù)可被獨(dú)立部署,各個(gè)微服務(wù)之間是松耦合的。每個(gè)微服務(wù)僅關(guān)注于完成一件任務(wù)并很好地完成該任務(wù)。傳統(tǒng)架構(gòu)升級(jí)困難。新的輕量級(jí)協(xié)議容器化的出現(xiàn)。熔斷處理在微服務(wù)出現(xiàn)問(wèn)題時(shí)防止出現(xiàn)雪崩效應(yīng)。 聊完Spring Boot,我們來(lái)看看Spring Boot最重要的一方面的應(yīng)用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我們先聊聊微服務(wù)。 ...
摘要:相對(duì)于工廠模式,抽象工廠模式生產(chǎn)的對(duì)象更加具體,也更加豐富,但相對(duì)編碼也更加復(fù)雜。具體的抽象工廠模式的實(shí)現(xiàn)大家可以參考菜鳥教程。知道了工廠模式和抽象工廠模式的區(qū)別,請(qǐng)大家使用的時(shí)候應(yīng)該根據(jù)具體的情況進(jìn)行選擇。 大家好,今天給大家分享一些Spring的學(xué)習(xí)心得,在講Spring之前,先和大家分享Spring中核心的設(shè)計(jì)模式。 工廠模式 在聊概念之前我先問(wèn)問(wèn)大家:什么是工廠? 這個(gè)很簡(jiǎn)單,...
摘要:通過(guò)我們可以更輕松地入門,更簡(jiǎn)單的使用的框架。團(tuán)隊(duì)為了擺脫框架中各類繁復(fù)紛雜的配置,使用約定優(yōu)于配置的思想,在基礎(chǔ)上整合了大量常用的第三方庫(kù)的開發(fā)框架。這里還要說(shuō)的一點(diǎn),的出現(xiàn)并不是單純的為了簡(jiǎn)化開發(fā),更是為做鋪墊。 說(shuō)完了Spring 我們來(lái)聊聊Spring的進(jìn)階版Spring Boot,如果你還不知道Spring Boot,那希望這篇文章能夠?yàn)槟阒该鞣较颉?Spring Boot ...
摘要:是結(jié)構(gòu)在框架中的一種表現(xiàn)形式。這句話聽起來(lái)有點(diǎn)繞,我們可以看一下下面這張圖,大家可以吧容器中的理解為全局變量,吧容器中的理解為局部變量。在方法體中可以訪問(wèn)局部變量和全局變量,但是在方法外,就只能訪問(wèn)全局變量,是不能訪問(wèn)局部變量的。 聊完了Spring,我們來(lái)看看Spring在web方面的應(yīng)用Spring MVC。 MVC 首先我們來(lái)看什么是mvc? 大家知道在jsp里面也是可以寫jav...
閱讀 2255·2021-11-23 09:51
閱讀 1048·2021-11-18 10:02
閱讀 3441·2021-10-13 09:49
閱讀 1269·2021-09-22 14:57
閱讀 10462·2021-08-18 10:20
閱讀 1185·2019-08-30 15:55
閱讀 2232·2019-08-29 16:06
閱讀 3237·2019-08-29 11:14