溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java依賴倒置原則案例分析

發布時間:2022-02-10 13:37:15 來源:億速云 閱讀:217 作者:iii 欄目:開發技術

今天小編給大家分享一下Java依賴倒置原則案例分析的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    定義

    依賴倒轉原則,又稱依賴倒置原則(Dependence Inversion Principle),又稱DIP原則,即:上層模塊不應該依賴底層模塊,它們都應該依賴于抽象,抽象不應該依賴于細節,細節應該依賴于抽象。抽象對代碼來說即接口或者抽象類 細節對代碼來說即實現類。換句話說 依賴倒轉原則的核心的理念 相對于細節來說,抽象要穩定得多。要求我們 面向接口編程,進行設計。

    案例

    需求

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

    方案一

    定義工作人員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 {
    
        /**
         * 微信發送的消息
         * @author: liyajie
         * @date: 2022/1/30 20:10
         * @param
         * @return void
         * @exception:
         * @update:
         * @updatePerson:
         **/
        public void sendMessage(){
            System.out.println("微信上,老板找你加班了");
        }
    }

    定義測試類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{
    
        /**
         * 微信發送的消息
         * @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();
        }
    }

    定義測試類Test2.java

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

    對比分析

    方案一違反了依賴倒置原則,如果功能需求擴展,比如說需要擴展一種飛書發送消息,我們需要新增一個飛書類,并實現發送消息的功能,工作人員的類也需要修改接收消息的方法,客戶端也需要進行相應的修改,改動大,風險大。

    方案二遵守了依賴倒置原則,同樣的需求擴展,抽象一個公共的消息接口,所有的微信,飛書等發送消息的類只要實現該接口,重寫發送消息的方法,工作人員的接收消息方法以消息接口為入參,客戶端只需要傳入相應的消息實體類,擴展方便,耦合低。

    以上就是“Java依賴倒置原則案例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女