最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計(jì)模式七大原則之依賴倒置原則詳解

 更新時(shí)間:2022年02月10日 10:47:32   作者:溫故知新之java  
依賴倒轉(zhuǎn)原則,即:上層模塊不應(yīng)該依賴底層模塊,它們都應(yīng)該依賴于抽象,抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。本文將詳細(xì)介紹Java設(shè)計(jì)模式七大原則之一的依賴倒置原則,需要的可以參考一下

定義

依賴倒轉(zhuǎn)原則,又稱依賴倒置原則(Dependence Inversion Principle),又稱DIP原則,即:上層模塊不應(yīng)該依賴底層模塊,它們都應(yīng)該依賴于抽象,抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。抽象對(duì)代碼來說即接口或者抽象類 細(xì)節(jié)對(duì)代碼來說即實(shí)現(xiàn)類。換句話說 依賴倒轉(zhuǎn)原則的核心的理念 相對(duì)于細(xì)節(jié)來說,抽象要穩(wěn)定得多。要求我們 面向接口編程,進(jìn)行設(shè)計(jì)。

案例

需求

工作人員接收微信老板發(fā)來的加班消息

方案一

定義工作人員Worker.java

/**
 * 工作人員
 * @author:liyajie
 * @createTime:2022/1/30 20:08
 * @version:1.0
 */
public class Worker {

    /**
     * 工作人員接收消息
     * @author: liyajie
     * @date: 2022/1/30 20:10
     * @param weChat
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void getMessage(WeChat weChat){
        weChat.sendMessage();
    }
}

定義微信消息類WeChat.java

/**
 * 微信消息類
 * @author:liyajie
 * @createTime:2022/1/30 20:07
 * @version:1.0
 */
public class WeChat {

    /**
     * 微信發(fā)送的消息
     * @author: liyajie
     * @date: 2022/1/30 20:10
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void sendMessage(){
        System.out.println("微信上,老板找你加班了");
    }
}

定義測(cè)試類Test1.java

public class Test1 {

    public static void main(String[] args) {
        new Worker().getMessage(new WeChat());
    }
}

方案二

定義消息接口IMessage.java

/**
 * 消息接口
 * @author:liyajie
 * @createTime:2022/1/30 20:15
 * @version:1.0
 */
public interface IMessage {
    void sendMessage();
}

定義微信消息類WeChatNew.java

/**
 * 微信消息類
 * @author:liyajie
 * @createTime:2022/1/30 20:07
 * @version:1.0
 */
public class WeChatNew implements IMessage{

    /**
     * 微信發(fā)送的消息
     * @author: liyajie
     * @date: 2022/1/30 20:10
     * @param
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    @Override
    public void sendMessage(){
        System.out.println("微信上,老板找你加班了");
    }
}

定義飛書類FeiShu.java

/**
 * 飛書消息類
 * @author:liyajie
 * @createTime:2022/1/30 20:16
 * @version:1.0
 */
public class FeiShu implements IMessage{

    @Override
    public void sendMessage() {
        System.out.println("飛書上,老板喊你加班了");
    }
}

定義工作人員類WorkerNew.java

/**
 * 工作人員類
 * @author:liyajie
 * @createTime:2022/1/30 20:18
 * @version:1.0
 */
public class WorkerNew {
    /**
     * 工作人員接收消息
     * @author: liyajie
     * @date: 2022/1/30 20:10
     * @param iMessage
     * @return void
     * @exception:
     * @update:
     * @updatePerson:
     **/
    public void getMessage(IMessage iMessage){
        iMessage.sendMessage();
    }
}

定義測(cè)試類Test2.java

public class Test2 {
    public static void main(String[] args) {
        // 微信
        new WorkerNew().getMessage(new WeChatNew());
        // 飛書
        new WorkerNew().getMessage(new FeiShu());
    }
}

對(duì)比分析

方案一違反了依賴倒置原則,如果功能需求擴(kuò)展,比如說需要擴(kuò)展一種飛書發(fā)送消息,我們需要新增一個(gè)飛書類,并實(shí)現(xiàn)發(fā)送消息的功能,工作人員的類也需要修改接收消息的方法,客戶端也需要進(jìn)行相應(yīng)的修改,改動(dòng)大,風(fēng)險(xiǎn)大。

方案二遵守了依賴倒置原則,同樣的需求擴(kuò)展,抽象一個(gè)公共的消息接口,所有的微信,飛書等發(fā)送消息的類只要實(shí)現(xiàn)該接口,重寫發(fā)送消息的方法,工作人員的接收消息方法以消息接口為入?yún)ⅲ蛻舳酥恍枰獋魅胂鄳?yīng)的消息實(shí)體類,擴(kuò)展方便,耦合低。

總結(jié)

通過上面兩個(gè)案例,我們可以得到以下結(jié)論:

1.低層模塊盡量都要有抽象類或接口,或者兩者都有,

2.程序穩(wěn)定性更好,變量的聲明類型盡量是抽象類或者接口,這樣我們的變量引用和實(shí)際對(duì)象間,就存在一個(gè)緩沖層, 利于程序擴(kuò)展和優(yōu)化

到此這篇關(guān)于Java設(shè)計(jì)模式七大原則之依賴倒置原則詳解的文章就介紹到這了,更多相關(guān)Java依賴倒置原則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java加密解密工具(適用于JavaSE/JavaEE/Android)

    Java加密解密工具(適用于JavaSE/JavaEE/Android)

    這篇文章主要介紹了Java加密解密工具,適用于JavaSE/JavaEE/Android,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目的詳細(xì)步驟

    Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目的詳細(xì)步驟

    這篇文章主要介紹了Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • JavaTCP上傳文本文件代碼

    JavaTCP上傳文本文件代碼

    今天小編就為大家分享一篇關(guān)于JavaTCP上傳文本文件代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 使用Nacos作為配置中心的命名空間、配置分組

    使用Nacos作為配置中心的命名空間、配置分組

    文章詳細(xì)介紹了Spring Cloud Config配置中心的命名空間、配置集、配置集ID、配置分組以及如何在微服務(wù)中加載和使用這些配置,通過配置中心,可以實(shí)現(xiàn)配置隔離和集中管理,簡(jiǎn)化微服務(wù)的配置維護(hù)
    2024-12-12
  • System.identityHashCode和hashCode的區(qū)別及說明

    System.identityHashCode和hashCode的區(qū)別及說明

    String調(diào)用hashCode()和System.identityHashCode()返回值不同是因?yàn)镾tring重寫了hashCode()方法,而System.identityHashCode()返回對(duì)象的內(nèi)存地址哈希值;Test調(diào)用兩個(gè)方法返回值相同是因?yàn)門est沒有重寫hashCode()方法,因此兩者調(diào)用底層的JVM_IHashCode方法返回相同值
    2024-11-11
  • Java中對(duì)于雙屬性枚舉的使用案例

    Java中對(duì)于雙屬性枚舉的使用案例

    今天小編就為大家分享一篇關(guān)于Java中對(duì)于雙屬性枚舉的使用案例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 分布式下實(shí)現(xiàn)配置管理方式

    分布式下實(shí)現(xiàn)配置管理方式

    分布式配置管理平臺(tái)是為了解決配置管理問題而出現(xiàn)的,它能夠?qū)崟r(shí)管理配置信息,確保配置的實(shí)時(shí)性和高可用性,配置管理平臺(tái)通?;谕扑?訂閱模式,客戶端訂閱配置信息,配置中心負(fù)責(zé)推送配置數(shù)據(jù),常見的分布式配置管理平臺(tái)包括Apollo、Diamond和Disconf
    2024-12-12
  • Spring?Bean獲取方式的實(shí)例化方式詳解

    Spring?Bean獲取方式的實(shí)例化方式詳解

    工作中需要對(duì)一個(gè)原本加載屬性文件的工具類修改成對(duì)數(shù)據(jù)庫的操作當(dāng)然,ado層已經(jīng)寫好,但是需要從Spring中獲取bean,然而,工具類并沒有交給Spring來管理,所以需要通過方法獲取所需要的bean。于是整理了Spring獲取bean的幾種方法
    2023-03-03
  • Java多線程編程小實(shí)例模擬停車場(chǎng)系統(tǒng)

    Java多線程編程小實(shí)例模擬停車場(chǎng)系統(tǒng)

    這是一個(gè)關(guān)于Java多線程編程的例子,用多線程的思想模擬停車場(chǎng)管理系統(tǒng),這里分享給大家,供需要的朋友參考。
    2017-10-10
  • SSM 實(shí)現(xiàn)登錄驗(yàn)證碼功能(附源碼)

    SSM 實(shí)現(xiàn)登錄驗(yàn)證碼功能(附源碼)

    這篇文章主要介紹了SSM 實(shí)現(xiàn)登錄驗(yàn)證碼功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-12-12

最新評(píng)論

平定县| 云南省| 博罗县| 德清县| 阳朔县| 崇信县| 密云县| 九台市| 屏南县| 遂川县| 泰安市| 龙游县| 友谊县| 建平县| 阿克| 房山区| 井研县| 云浮市| 忻城县| 平原县| 南康市| 巴彦县| 拉萨市| 罗平县| 吉安市| 祁阳县| 湘西| 穆棱市| 海晏县| 南城县| 乌鲁木齐县| 三亚市| 承德县| 汤阴县| 尼勒克县| 高要市| 景谷| 惠东县| 凤山市| 富平县| 任丘市|