最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java設(shè)計(jì)原則的依賴倒置是什么

這篇文章主要介紹了Java設(shè)計(jì)原則的依賴倒置是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java設(shè)計(jì)原則的依賴倒置是什么文章都會有所收獲,下面我們一起來看看吧。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)大邑縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

依賴倒置簡介

我們經(jīng)常在框架開發(fā)過程中聽說依賴倒置、依賴反轉(zhuǎn)、控制反轉(zhuǎn)、依賴注入、IOC一些名詞,我們常聽的這些名詞和開發(fā)設(shè)計(jì)原則中的依賴反轉(zhuǎn)原則是有關(guān)系,我們來看看這幾個名詞:

  • 控制反轉(zhuǎn)(IOC),這個是Spring面試基本上都會問的一個問題,IOC全稱Inversion of  Controller,IOC不一定是Spring的特性,Spring是用IOC的一個基礎(chǔ)框架;簡單理解就是之前通過簡單的方法把業(yè)務(wù)代碼冗余在一起,需要改的時候比較麻煩,權(quán)限完全由開發(fā)者控制,反正意思是通過一些設(shè)計(jì)模式讓開發(fā)者不在關(guān)系基礎(chǔ)開發(fā),只要實(shí)現(xiàn)應(yīng)該實(shí)現(xiàn)的功能,權(quán)限交由程序控制;

  • 依賴注入(DI),全稱為Dependency Injection,簡單理解就是需要操作的對象通過構(gòu)造方法、get/set、接口構(gòu)造的對象,通過外部傳入的對象注入新的對象,這個就是依賴注入,Spring就是運(yùn)用比較好的一個框架;

  • 依賴反轉(zhuǎn)原則(DIP),全稱為Dependency Inversion Principle,也可以叫依賴倒置原則,意思就是:高層模塊(high-level modules)不要依賴低層模塊(low-level)。高層模塊和低層模塊應(yīng)該通過抽象(abstractions)來互相依賴。除此之外,抽象(abstractions)不要依賴具體實(shí)現(xiàn)細(xì)節(jié)(details),具體實(shí)現(xiàn)細(xì)節(jié)(details)依賴抽象(abstractions)

模塊概念

Java設(shè)計(jì)原則的依賴倒置是什么

我們經(jīng)常所說的高模塊和低模塊是指什么?我們怎么區(qū)分,或者畫圖的時候標(biāo)注關(guān)系;

簡單來說就是,在調(diào)用鏈上,調(diào)用者屬于高層,被調(diào)用者屬于低層。為什么會用這樣一個設(shè)計(jì)呢,追根溯本就是松耦合,不然高模塊強(qiáng)綁定低模塊,也不會因?yàn)榈讓幽K的代碼而影響高層模塊;但是在實(shí)際場景中是否完全有必要遵守這一規(guī)則呢?我們來看一個常見的例子:

MVC架構(gòu):常用的使用方式Controller-->Service-->Dao,Controller對應(yīng)Service來說就是高模塊,Service對于Dao來說也是高模塊,但是我們在實(shí)際業(yè)務(wù)場景中直接通過注入的形式開發(fā),當(dāng)然有的也可能不會直接注入,通過接口的形式獲取對象,這樣帶來的工作成本就會增加。

那我們就會有一個疑問,使用這一原則會帶來工作成本的增加嗎?按照我的理解話模塊也應(yīng)該是需要劃分一個粒度,也需要分為模塊間關(guān)系、代碼間關(guān)鍵、基礎(chǔ)框架設(shè)計(jì)關(guān)系、業(yè)務(wù)代碼關(guān)系,我們要去考慮擴(kuò)展性,如果來說業(yè)務(wù)基本上不會怎么擴(kuò)展,完全沒有必要用到這一原則。

好萊塢原則

好萊塢原則簡稱Don‘t call us, we‘ll call you,科普下在好萊塢,把簡歷遞交給演藝公司后就只有回家等待。由演藝公司對整個娛樂項(xiàng)的完全控制,演員只能被動式的接受公司的差使,在需要的環(huán)節(jié)中,完成自己的演出。這和我們的依賴倒置原則不謀而合,所有依賴倒置原則也就叫好萊塢原則。

好萊塢原則的具體體現(xiàn)是模板方法模式,所有的組件都是被動的,所有的組件初始化和調(diào)用都由容器負(fù)責(zé)。這也是一個基礎(chǔ)框架應(yīng)該考慮的點(diǎn),主要有以下好處:

  • 對基于接口編程的支持

  • 減少單件和抽象工廠的依賴

  • 降低業(yè)務(wù)和框架的耦合

  • 業(yè)務(wù)組件可復(fù)用,可插拔

依賴框架之Spring

我們需要要理清一個概念I(lǐng)OC是Spring的一個特性,成就了Spring框架的特性,并不是Spring框架創(chuàng)造了IOC。

Spring的IOC有什么作用?所謂IOC,就是由Spring IOC 容器來負(fù)責(zé)對象的生命周期和對象之間的關(guān)系

Spring IOC被注入對象提供被依賴對象也有如下幾種方式:構(gòu)造方法注入、stter方法注入、接口注入。

構(gòu)造器注入

構(gòu)造器注入,顧名思義就是被注入的對象通過在其構(gòu)造方法中聲明依賴對象的參數(shù)列表,讓外部知道它需要哪些依賴對象。構(gòu)造器注入比較簡單,通過構(gòu)造方式構(gòu)造完成之后就完全可以使用。

TestBean(Test test){
     this.test = test;
}

setter 方法注入

對于 JavaBean 對象而言,我們一般都是通過 getter 和 setter 方法來訪問和設(shè)置對象的屬性。所以,當(dāng)前對象只需要為其所依賴的對象提供相對應(yīng)的 setter 方法,就可以通過該方法將相應(yīng)的依賴對象設(shè)置到被注入對象中。相比于構(gòu)造器注入,setter 方式注入會顯得比較寬松靈活些,它可以在任何時候進(jìn)行注入

public class TestBean {

   private Test test;

   public void setTestBean(Test test) {
       this.test = test;
   }
}

接口方式注入

接口方式注入顯得比較霸道,因?yàn)樗枰灰蕾嚨膶ο髮?shí)現(xiàn)不必要的接口,所以我們要合理去使用這種場景,一般在基礎(chǔ)框架中很少存在,在業(yè)務(wù)領(lǐng)域就用的比較多了。

注解注入

現(xiàn)在Spring主流注入方式主要通過注解去做實(shí)現(xiàn),都是基于元注解@Component去實(shí)現(xiàn),也就與@Component產(chǎn)生很多派生注解。

@Autowrited
private TestBean testBean;

@Component
public TestBean(){

}

關(guān)于“Java設(shè)計(jì)原則的依賴倒置是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Java設(shè)計(jì)原則的依賴倒置是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁名稱:Java設(shè)計(jì)原則的依賴倒置是什么
轉(zhuǎn)載來于:http://fisionsoft.com.cn/article/jccedo.html