• 设计原则 依赖倒置原则


    概念

    • 依赖倒置原则的定义:Dependency Inversion Principle,DIP,高层模块不应该依赖低层模块,二者都应该依赖其抽象。
    • 依赖倒置原则的中心思想:抽象不应该依赖细节;细节应该依赖抽象。
    • 依赖倒置原则的核心思想:针对接口编程,不要针对实现编程。
    • 依赖倒置原则的优点:可以减少类间的耦合性、提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险。
    • 如果说开闭原则是面向对象设计的目标,依赖倒置原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体体现。
    • 开闭原则是目标,里氏替换原则是基础,依赖倒置原则是手段,它们相互补充,相辅相成。

    实例

    代码实例

    • Coisini.java
    /**
     * @Description 课程学习
     * @date Dec 3, 12
     * @version 1.0
     */
    public class Coisini {
    
        public void studyJavaCourse() {
            System.out.println("在学习Java课程");
        }
    
        public void studyPythonCourse() {
            System.out.println("在学习Python课程");
        }
    
    }
    
    • Test.java
    /**
     * @Description 测试类
     * @date Dec 3, 12
     * @version 1.0
     */
    public class Test {
        public static void main(String[] args) {
            // 高层模块依赖低层模块,Test的修改是依赖于Coisini实现的
            Coisini coisini = new Coisini();
            coisini.studyJavaCourse();
            coisini.studyPythonCourse();
        }
    }
    
    • 输出结果
    在学习Java课程
    在学习Python课程
    

    开闭原则的实现

    • ICourse.java
    /**
     * @Description 课程接口
     * @date Dec 3, 2021
     * @version 1.0
     */
    public interface ICourse {
    
        /**
         * 学习课程
         */
        void studyCourse();
    
    }
    
    • JavaCourse.java
    /**
     * @Description Java课程
     * @date Dec 3, 2021
     * @version 1.0
     */
    public class JavaCourse implements ICourse{
        @Override
        public void studyCourse() {
            System.out.println("在学习Java课程");
        }
    }
    
    • PythonCourse.java
    /**
     * @Description Python课程 
     * @author coisini
     * @date Dec 3, 2021
     * @version 1.0
     */
    public class PythonCourse implements ICourse{
        @Override
        public void studyCourse() {
            System.out.println("在学习Python课程");
        }
    }
    
    • Coisini.java
    public class Coisini {
    
        /**
         * 学习课程
         * @param iCourse
         */
        public void studyImoocCourse(ICourse iCourse) {
            iCourse.studyCourse();
        }
    
    }
    
    • Test.java
    /**
     * @Description 依赖倒置原则测试类
     * @date Dec 3, 12
     * @version 1.0
     */
    public class Test {
    
        public static void main(String[] args) {
            // 面向接口编程
            Coisini coisini = new Coisini();
            coisini.studyImoocCourse(new JavaCourse());
            coisini.studyImoocCourse(new PythonCourse());
        }
    
    }
    
    • 输出结果
    在学习Java课程
    在学习Python课程
    
    • 类图变化如下

    在这里插入图片描述
    在这里插入图片描述

    • 依赖倒置原则的实现总结:程序要依赖于抽象接口,不要依赖于具体的实现,主要目的是降低耦合;以抽象为基础搭建起来的架构比以细节为基础搭建的架构更稳定

    源码

    GitHubhttps://github.com/Maggieq8324/design_pattern.git


    - End -
    - 个人学习笔记 -

    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:Maggieq8324
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    【压测】压力测试工具siege的用法
    五大python自动化框架学习
    自动化“监视”剩余内存&句柄数
    iperf 使用小窍门
    测试 USB 的 读写
    pppoe环境下的mtu和mss的配合问题
    您保存的文件格式可能含有不兼容的功能 是否已保持工作簿这种格式
    pycharm2018永久破解的方法
    Linux如何快速跳转到文档开头或者末尾
    打造自己的Ubuntu渗透利器--Nmap、Zenmap、Sqlmap安装
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/15647987.html
Copyright © 2020-2023  润新知