美文网首页Java工作知识
设计原则:依赖倒置原则

设计原则:依赖倒置原则

作者: 谁家的猪 | 来源:发表于2019-07-08 17:42 被阅读1次

定义:高层模块不应该依赖底层模块,二者都应该依赖其抽象
抽象不应该依赖细节;细节应该依赖抽象
针对接口编程,不要针对实现编程
优点:可以减少类间的耦合性,提高系统稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险

示例

实现Lily学习的功能(1)

目录结构

目录结构.png

代码实现

  1. 创建Lily类
/**
 * @author lijiayin
 */
public class Lily {
    
    public void studyJava(){
        System.out.println("学习Java");
    }

    public void studyPython(){
        System.out.println("学习Python");
    }
}
  1. 创建测试类测试
/**
 * @author lijiayin
 */
public class Test {

    public static void main(String[] args) {
        Lily lily = new Lily();
        lily.studyJava();
        lily.studyPython();
    }
}
  1. 测试结果


    测试结果.png

实现Lily学习的功能(2)

还想学习Go怎么办?

目录结构

目录结构.png

代码实现

  1. 创建ICourse接口
/**
 * @author lijiayin
 */
public interface ICourse {
    
    void studyCourse();
}

  1. 创建三个学习类:JavaCourse、PythonCourse、GoCourse
/**
 * @author lijiayin
 */
public class JavaCourse implements ICourse {
    @Override
    public void studyCourse() {
        System.out.println("学习Java");
    }
}
/**
 * @author lijiayin
 */
public class PythonCourse implements ICourse {
    @Override
    public void studyCourse() {
        System.out.println("学习Python");
    }
}

/**
 * @author lijiayin
 */
public class GoCourse implements ICourse {
    @Override
    public void studyCourse() {
        System.out.println("学习Go");
    }
}
  1. 修改 Lily类
/**
 * @author lijiayin
 */
public class Lily {
    
    public void studyCourse(ICourse iCourse){
        iCourse.studyCourse();
    }
}
  1. 修改测试类
/**
 * @author lijiayin
 */
public class Test {

    public static void main(String[] args) {
        Lily lily = new Lily();
        lily.studyCourse(new JavaCourse());
        lily.studyCourse(new PythonCourse());
        lily.studyCourse(new GoCourse());
    }
}
  1. 测试结果


    测试结果.png

实现Lily学习的功能(3)

目录结构.png

代码实现

  1. 修改Lily类
/**
 * @author lijiayin
 */
public class Lily {
    
    private ICourse iCourse;
    
    public Lily(ICourse iCourse){
        this.iCourse = iCourse;
    }
    
    public void studyCourse(){
        this.iCourse.studyCourse();
    }
}
  1. 修改测试类
/**
 * @author lijiayin
 */
public class Test {

    public static void main(String[] args) {
        Lily lily = new Lily(new GoCourse());
        lily.studyCourse();
    }
}
  1. 测试结果


    测试结果.png

实现Lily学习的功能(4)

目录结构.png

代码实现

  1. 修改Lily类
/**
 * @author lijiayin
 */
public class Lily {
    
    private ICourse iCourse;
    
    public void studyCourse(){
        this.iCourse.studyCourse();
    }

    public void setiCourse(ICourse iCourse) {
        this.iCourse = iCourse;
    }
}
  1. 修改测试类
/**
 * @author lijiayin
 */
public class Test {

    public static void main(String[] args) {
        Lily lily = new Lily();
        lily.setiCourse(new JavaCourse());
        lily.studyCourse();
        lily.setiCourse(new PythonCourse());
        lily.studyCourse();
        lily.setiCourse(new GoCourse());
        lily.studyCourse();
    }
}
  1. 测试结果


    测试结果.png
  2. UML图


    UML.png

相关文章

  • 软件架构设计原则之依赖倒置原则

    1 依赖倒置原则 依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码...

  • 依赖倒置原则

    个人博客原文:依赖倒置原则 设计模式六大原则之三:依赖倒置原则。 简介 姓名 :依赖倒置原则 英文名 :Depen...

  • 六大设计原则 -依赖倒置原则【Dependence Invers

    六大设计原则 单一职责原则 里式替换原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则 依赖倒置原则 定义:高...

  • 设计模式的设计原则

    设计模式的设计原则 面向对象五大设计原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 开闭原则 设计模...

  • Java 依赖倒置 控制反转

    软件开发六大设计原则 合称SOLID 依赖倒置原则也是其中一个 依赖倒置原则定义: 上层模块不应该依赖底层模块,它...

  • 第二周

    请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则? 依赖倒置原则 Dependency Inv...

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 依赖倒置/好莱坞原则/控制反转

    # 请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则? 依赖倒置原则: - 高层模块不应该依赖...

  • [设计原则]依赖倒置原则

    依赖倒置原则(DIP)原则的原始定义: 高层模块不应该依赖低层模块,两者都应该依赖其抽象。 抽象不应该依赖细节。 ...

  • 设计原则——依赖倒置原则

    定义:1.高层模块不应该依赖低层模块,二者都应该依赖其抽象;2.抽象不应该依赖细节;3.细节应该依赖抽象。 因为D...

网友评论

    本文标题:设计原则:依赖倒置原则

    本文链接:https://www.haomeiwen.com/subject/iljahctx.html