日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式之禅之六大设计原则-依赖倒置原则

發(fā)布時間:2023/12/19 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式之禅之六大设计原则-依赖倒置原则 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

依賴倒置原則
依賴倒置原則的原始定義是:
● 高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象;
● 抽象不應(yīng)該依賴細節(jié);
● 細節(jié)應(yīng)該依賴抽象。

那什么是抽象?什么又是細節(jié)呢?
---->在Java語言中,抽象就是指接口或抽象類,兩者都是不能直接被實例化的;細節(jié)就是實現(xiàn)類,實現(xiàn)接口或繼承抽象類而產(chǎn)生的類就是細節(jié),其特點就是可以直接被實例化,也就是可以加上一個關(guān)鍵字new產(chǎn)生一個對象。依賴倒置原則在Java語言中的表現(xiàn)就是:

● 模塊間的依賴通過抽象發(fā)生,實現(xiàn)類之間不發(fā)生直接的依賴關(guān)系,其依賴關(guān)系是通過
接口或抽象類產(chǎn)生的;
● 接口或抽象類不依賴于實現(xiàn)類;
● 實現(xiàn)類依賴接口或抽象類。更加精簡的定義就是“面向接口編程”——OOD(Object-Oriented Design,面向?qū)ο笤O(shè)
計)的精髓之一。

依賴倒置的優(yōu)點
---->減少類間的耦合性
---->提高系統(tǒng)的穩(wěn)定性
---->降低并行開發(fā)引起的風險
---->提高代碼的可讀性和可維護性。

證明一個定理是否正確,有兩種常用的方法:一種是根據(jù)提出的論題,經(jīng)過一番論證,推出和定理相同的結(jié)論,這是順推證法;還有一種是首先假設(shè)提出的命題是偽命題,然后推導出一個荒謬、與已知條件互斥的結(jié)論,這是反證法。我們今天就用反證法來證明依賴倒置原則是多么優(yōu)秀和偉大


論題:依賴倒置原則可以減少類間的耦合性,提高系統(tǒng)的穩(wěn)定性,降低并行開發(fā)引起的風險,提高代碼的可讀性和可維護性。
反論題:不使用依賴倒置原則也可以減少類間的耦合性,提高系統(tǒng)的穩(wěn)定性,降低并行開發(fā)引起的風險,提高代碼的可讀性和可維護性。

Driver類
package com.yeepay.sxf.sj4;

/**
?* 司機
?* @author sxf
?*
?*/
public class Driver {

??????? public void dirverCar(Benchi benchi){
??????????????? System.out.println("Driver.dirverCar(人開車)");?????? ?
??????????????? benchi.run();
??????? }
}
Car類
package com.yeepay.sxf.sj4;
/**
?* 奔馳
?* @author sxf
?*
?*/
public class Benchi {

??????? public void run(){
??????????????? System.out.println("Benchi.run(奔馳奔跑)");
??????? }
}
Client類
??????? public static void main(String[] args) {
??????????????? Benchi vBenchi=new Benchi();
??????????????? Driver diiDriver=new Driver();
??????????????? diiDriver.dirverCar(vBenchi);
??????? }
(1)如果人再想開寶馬,則不靈活。耦合度大。抽象,面向接口編程,可以降低耦合度。
(2)大型項目。人分模塊開發(fā)。高模塊,不需要等待低模塊開發(fā)完成,才能開發(fā)。只需要低模塊的接口即可。

抽象是對實現(xiàn)的約束,對依賴者而言,也是一種契約,不僅僅約束自己,還同時約束自己與外部的關(guān)系,其目的是保證所有的細節(jié)不脫離契約的范疇,確保約束雙方按照既定的契約(抽象)共同發(fā)展,只要抽象這根基線在,細節(jié)就脫離不了這個圈圈,始終讓你的對象做到“言必信,行必果”。

依賴的三種寫法
第一:構(gòu)造函數(shù)傳遞依賴對象
第二:Setter方法傳遞依賴對象
第三:接口聲明依賴對象

最佳實踐
依賴倒置原則的本質(zhì)就是通過抽象(接口或抽象類)使各個類或模塊的實現(xiàn)彼此獨立,不互相影響,實現(xiàn)模塊間的松耦合,我們怎么在項目中使用這個規(guī)則呢?只要遵循以下的幾個規(guī)則就可以:
● 每個類盡量都有接口或抽象類,或者抽象類和接口兩者都具備
??????? -->這是依賴倒置的基本要求,接口和抽象類都是屬于抽象的,有了抽象才可能依賴倒置。
● 變量的表面類型盡量是接口或者是抽象類
??????? -->很多書上說變量的類型一定要是接口或者是抽象類,這個有點絕對化了,比如一個工具
類,xxxUtils一般是不需要接口或是抽象類的。還有,如果你要使用類的clone方法,就必須
使用實現(xiàn)類,這個是JDK提供的一個規(guī)范。
● 任何類都不應(yīng)該從具體類派生
??????? -->繼承不得到超過兩層。事無絕對。但可以追求完美。
● 盡量不要覆寫基類的方法
??????? -->如果基類是一個抽象類,而且這個方法已經(jīng)實現(xiàn)了,子類盡量不要覆寫。類間依賴的是抽象,覆寫了抽象方法,對依賴的穩(wěn)定性會產(chǎn)生一定的影響。
● 結(jié)合里氏替換原則使用

總結(jié)

以上是生活随笔為你收集整理的设计模式之禅之六大设计原则-依赖倒置原则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。