首页 > 其他分享 >依赖倒置原则

依赖倒置原则

时间:2023-05-10 15:25:12浏览次数:41  
标签:依赖 原则 study System public println 倒置 void out

依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象
减少类与类之间的耦合性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险,这样说起来可能有点抽象,接下来以例子说明

点击查看代码
public class sizimie {
        public void studyJavaCourse(){
            System.out.println("铃芽在学习 Java 的课程");
        }
        public void studyPythonCourse(){
            System.out.println("铃芽在学习 Python 的课程");
        }
    }

    public static void main(String[] args) {
        sizimie sizimie1 = new sizimie();
        sizimie1.studyJavaCourse();
        sizimie1.studyPythonCourse();
    }
sizemie类可以看做是底层实现,main是高层调用,如果这二者不依赖于抽象,则有新业务的时候,底层到高层的代码全部都要改一遍,相当恶心了,正确做法应该是抽象出接口,例如
点击查看代码
public interface ICourse {
        void study();
    }
    
    public class JavaCourse implements ICourse {
        @Override
        public void study() {
            System.out.println("zz 在学习 Java 课程");
        }
    }
   
    public class PythonCourse implements ICourse {
        @Override
        public void study() {
            System.out.println("zz 在学习 Python 课程");
        }

再修改底层实现
public class sizimie  {
        public void study(ICourse course){
            course.study();
        }
    }
修改调用类
public static void main(String[] args) {
        Sizemie sizemie1 = new Sizemie();
        sizemie1.study(new JavaCourse());
        sizemie1.study(new PythonCourse());
    }
这样子之后,无论后续有什么新课,都只需要实现接口,传递实现类就好了,避免了底层的改动

标签:依赖,原则,study,System,public,println,倒置,void,out
From: https://www.cnblogs.com/sakura114/p/17387381.html

相关文章

  • net core依赖注入
    .NetCore中依赖注入有几个关键的类型,简单介绍一下:IServiceCollection:负责存储注册的服务,可以通过其扩展方法进行服务注册;ServiceDescriptor:服务注册时的信息,如服务类型、实现类型、实例类型、生命周期等;IServiceProvider:理解是常说的容器,是IServiceCollection创建出来的,用来......
  • 开闭原则
    开闭原则(Open-ClosedPrinciple,OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。实现开闭原则的核心思想就是面向抽象编程,现在我们思考一个场景,有一个课程类,课程类作为父类,有许多子类,比如java课程,python课程,前端课程...课程类中有价格属性定义,子类继承父类的价......
  • 4.Spring之依赖注入源码解析
    Spring中到底有几种依赖注入的方式?首先分两种:手动注入自动注入手动注入在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值。<beanname="userService"class="com.luban.service.UserService"> <propertyname="orderService"ref="orderService"/>&l......
  • 操作系统(3.3.6)--基于公平原则的调度算法
    1.保证调度算法保证处理机分配的公平性。如果在系统中有n个相同类型的进程同时运行,为公平起见,须保证每个进程都获得相同的处理机时间1/n。(1)跟踪计算每个进程已执行的处理时间;(2)计算每个进程应获得的处理机时间;(3)计算进程获得处理机时间的比率;(4)比较各进程获得处理机时间的比率......
  • 《开发板移植tcpdump 交叉编译 带有依赖库如何移植》
    1.下载源码由于tcpdump依赖于libpcap,所以需要先下载这两个的源代码;官方地址:https://www.tcpdump.org/这里示例所下载的版本是tcpdump-4.9.3.tar.gzlibpcap-1.9.1.tar.gz 2.编译libpcap解压libpcap源码,创建build目录,避免编译的临时文件污染源码tarxvflibp......
  • Pytest用例设计原则
    用例设计原则文件名为test_*.py和*_test.py以test_开头的函数以Test开头的类,test_开头的方法,并且不能有__init__方法所有的package包必须有__init__文件断言使用assert常用断言assertxx判断xx为真assertnotxx判断xx不为真assertainb判断b包含aasserta==b......
  • 设计原则
    一单一职责原则职责:引起变化的原因SRP原则:一个对象(方法)只做一件事SRP原则的应用难点就是如何去分离职责1何时应该分离职责并不是所有职责都应该一一分离如果随着需求变化,职责总是同时变化的就不必分离创建xhr对象&发送xhr请求职责的变化轴线仅当他们确定会......
  • 【Spring】循环依赖
    参考:阿里开发者-Spring循环依赖那些事(有完整流程图)  https://mp.weixin.qq.com/s/cqkZEvmmh7jnNt2K5r_lXg   问题:1、什么是循环依赖?2、为什么会产生循环依赖?3、循环依赖有哪些场景?4、Spring如何解决循环依赖的?5、Spring为什么使用三级缓存?6、Spring支持AOP循环依赖,为何......
  • 手动导入maven依赖
    1.下载jar包 去网站https://mvnrepository.com/找到对应依赖如下图自动导入失败 下完jar包找到jar包文件夹打开cmd 执行命令 mvninstall:install-file-Dfile=easyexcel-3.2.1.jar-DgroupId=com.alibaba-DartifactId=easyexcel-Dversion=3.2.1-Dpackagi......
  • DI依赖注入环境
    我还是在跟着狂神来学习Spring51.构造器注入2.Set方式注入【重点】3.扩展方式注入我在这里记录一下set依赖注入的步骤吧Set方式注入:分为依赖:bean对象的创建依赖于容器注入:bean对象中的所有属性,由容器来注入先放一下目录结构吧第一步:配置好实体类首先写了一些不同......