欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

本篇內(nèi)容介紹了“java設(shè)計原則的依賴倒置原則是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有郊區(qū)免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

簡介

依賴倒置原則是系統(tǒng)解耦的重要原則,遵循它可以讓我們的系統(tǒng)更加健壯。

定義

依賴倒置原則(Dependency Inversion Principle)是 Robert C. Martin 提出的,原則聲明了兩個方面:

  1. 上層模塊不應(yīng)該依賴下層模塊,雙方都應(yīng)依賴于抽象。

  2. 抽象不應(yīng)依賴實現(xiàn),實現(xiàn)應(yīng)該依賴抽象。

依賴倒置原則的聲明中有幾個概念:上層、下層,抽象、實現(xiàn)。

上層、下層是一類概念,在計算機的設(shè)計中,分層是常見的任務(wù)分解方法,每一層都使用下層提供的功能,又為更上層提供自己的功能。依賴倒置原則要求在設(shè)計層間通信、交互標(biāo)準(zhǔn)時,不應(yīng)依賴于某個下層,而是應(yīng)該依賴于抽象,這樣上下層之間就沒有強耦合,如果兩個實現(xiàn)都遵循了同樣的抽象,則可以在上層無感知的情況下替換下層實現(xiàn)。

抽象、實現(xiàn)是一類概念,抽象是對同一類任務(wù)本質(zhì)屬性的表達(dá),實現(xiàn)則是具體每一類任務(wù)的細(xì)節(jié)的表達(dá)。依賴倒置原則說明實現(xiàn)應(yīng)該依賴于抽象,是因為實現(xiàn)是對抽象骨架的填充,而抽象不應(yīng)依賴于實現(xiàn),是因為抽象是對本質(zhì)的歸納,應(yīng)去掉細(xì)節(jié)的干擾。

看了上面的規(guī)則,還需要問一下依賴倒置原則倒置了什么呢?

從字面看依賴倒置當(dāng)然是倒置了依賴,但核心是控制權(quán)的反轉(zhuǎn)。我們從下面的例子來解釋。

實踐

需求要求實現(xiàn)一個排序系統(tǒng),系統(tǒng)需要實現(xiàn)各種排序算法,使用方可以根據(jù)需要調(diào)用不同的排序算法來對自己的數(shù)據(jù)進行排序。

設(shè)計的接口如下:

public interface Sort {
    public void sort(int[] nums);
}

有不同的排序算法實現(xiàn):

public class QuickSort {
    public void sort(int[] nums) {
        //quick sort implementation
        ...
    }
}

public class MergeSort {
    public void sort(int[] nums) {
        //merge sort implementation
        ...
    }
}

public class BubbleSort {
    public void sort(int[] nums) {
        //bubble sort implementation
        ...
    }
}
......

使用方使用:

public class Client {
    public static void main(String[] args) {
        Sort sort = new QuickSort();
        int[] nums = new int[10];
        // initial nums
        sort.sort(nums);
    }
}

可以看到,使用方在使用的時候依賴的是抽象的Sort 接口,但是接口是沒法實例化的,因此第一句 Sort sort = new QuickSort(); 將實現(xiàn)實例化后賦值給變量,這里,使用方作為上層模塊就依賴了下層實現(xiàn),違反了依賴倒置原則。

要解決這個問題,需要將實例化的過程遷移到排序系統(tǒng)中,使用方通過配置、參數(shù)等方式選擇自己要使用的算法,這樣使用方就不依賴排序系統(tǒng)具體的實現(xiàn),而只依賴于Sort 的接口抽象。

我們實現(xiàn)一種由排序系統(tǒng)智能判斷返回排序算法的簡單工廠。

public final class SortFactory {
    private static final int SIZE_THRESHOLD = 300;
    public static Sort choose (int sortSize) {
        if (sortSize < SIZE_THRESHOLD) {
            return new BubbleSort();
        }
        
        return new QuickSort();
    }
}

使用方在在使用時直接使用 Sort sort = SortFactory.choose(size) 的形式來獲得排序?qū)嵗纯伞?/p>

從這個例子中,我們可以看到,實例化的控制權(quán)原本是在使用方的手中,但這樣就將抽象與實現(xiàn)耦合在了一起,后面我們使用簡單工廠模式將控制權(quán)交回到排序系統(tǒng),使用方就只需要調(diào)用工廠方法來獲取實例即可而無需關(guān)心具體實現(xiàn)了。

“java設(shè)計原則的依賴倒置原則是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

本文名稱:java設(shè)計原則的依賴倒置原則是什么
文章起源:http://aaarwkj.com/article46/godshg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、用戶體驗動態(tài)網(wǎng)站、ChatGPT、網(wǎng)站營銷、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
熟女少妇精品一区二区三区| 国产一级二级三级在线电影| 亚洲精品午夜久久久伊人| 日韩欧美在线一区二区| 99热视频这里只有精品| 欧美日韩免费一区二三区| 国产自愉自愉免费精品七| 亚洲成人av毛片在线观看| 国产99热这里只有精品| 欧美男女精品一区二区三区| 国产三级黄色片免费看| 日本在线免费成人高清| 成年人收看黄色一二级片| 人妻久久久久久精品99| 日韩中文字幕欧美国产| 国产精品精品国产色婷婷| 国产伦理在线观看一区二区| 亚洲av毛片一区二区| 久久国产精品成人av| 精品久久精品久久人妻九色| 久久亚洲中文字幕精品熟女一区 | 亚洲码av一区二区三区| 黑人精品少妇一区二区三区| 亚洲综合国产一二三四五区| 婷婷色悠悠,色悠悠激情啪啪| 国产av爆操黑丝美女| 欧美日韩一区二区三区大片| 美女在线视频一区二区三区| 中文字幕乱码人妻一区| 午夜看片国产操黑丝91网| 亚洲国产高清国产拍精品| 免费亚洲一级黄色录像| 日本一区二区三区三州免费观看| 一欧美一区二区三区| av高清不卡一区二区免费在线| 国产欧美日韩另类在线播放| 亚洲欧美综合区丁香六月| 国产精品国产三级国产普通话99| 自拍一区日韩二区欧美三区| 四虎在线观看精品一区| 午夜少妇久久久久久久久|