首页 > 其他分享 >【设计原则】图解何为依赖倒置

【设计原则】图解何为依赖倒置

时间:2023-07-30 10:22:12浏览次数:40  
标签:依赖 何为 抽象类 模块 倒置 图解 正向

依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。

要理解何为倒置,那就先得明确什么是“正向”,可以看到下图代码是自上而下地调用,即高层模块依赖底层模块,这就是正向依赖。:
image

而依赖倒置则是使用抽象接口来降低耦合,可以看到箭头是自下而上的,这就是所谓的倒置。
image

这时有人说,如果我箭头调转,抽象类在下,实现类在上,那不就变成正向了?
这种观点是不成立的,因为这是 UML 规定抽象类必须在上,实现类在下。

标签:依赖,何为,抽象类,模块,倒置,图解,正向
From: https://www.cnblogs.com/blacklsle/p/17591068.html

相关文章

  • 面向对象编程的 SOLID 原则 - 依赖倒置原则
    依赖倒置原则依赖倒置原则描述的是我们的class应该依赖接口和抽象类而不是具体的类和函数。在这篇文章(2000)里,Bob大叔如下总结该原则:“如果OCP声明了OO体系结构的目标,那么DIP则声明了主要机制”。这两个原则的确息息相关,我们在讨论开闭原则之前也要用到这一模式。......
  • 何为DDD
     从这一刻开始,请大家忘记自己是一名技术人员,用业务的角度来思考问题。 1、什么是DDDDDD(Domain-drivendesign,领域驱动设计),是一个很好的应用于微服务架构的方法论DDD要求项目全生命周期中,所有岗位人员都基于业务的角度去思考问题,而不是基于技术角度。“......
  • DNS解析常见问题:如何为网站配置负载均衡?
    DNS解析常见问题:如何为网站配置负载均衡?早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,系统功能也越来越复杂,单台服务器就算将性能优化得再好,也不足以支撑太大流量的访问压力了,这个时候就需要使用多台机器,......
  • 环球骑行骑行路线图解 All In One
    环球骑行骑行路线图解AllInOneroundtheworldcycling环球旅行周游世界demos朱志文环球骑行骑行路线图解粉丝数25.1万获赞数162.4万播放数3181万阅读数9697https://space.bilibili.com/479592209朱志文环球骑行抖音号:qigeqiu201299.9万获赞19.8万粉丝h......
  • 图解 Vue 响应式原理
    Vue初始化模板渲染组件渲染为了便于理解,本文将从以下两个方面进行探索:从Vue初始化,到首次渲染生成DOM的流程。从Vue数据修改,到页面更新DOM的流程。Vue初始化先从最简单的一段Vue代码开始:"""<template><div> {{message}}</div></template><......
  • 吐槽一下依赖倒置这个糟糕的名字
    新手上来看见依赖倒置就迷糊,依赖这个词没问题,比如业务逻辑层依赖于数据库访问层。这没毛病。但是倒置这个词儿让人迷糊,这跟谁倒置了呀?把谁倒置了? 其实所谓的依赖倒置说的就是不管是业务逻辑层还是数据库访问层,都要面向接口编程。 我再翻译一下词啊,就是上面例子当中所谓的业......
  • 图解SVN开发版本控制和发布流程,Trunk、Tag、Branch的使用
    介绍一种比较合理的SVNTrunk、Tag和Branch使用方法。先上图,再说明:  责职说明:Trunk:用于各版本开发提交代码TAG:用于记录和保存每个release/milestone的代码Branch:用于bugfixing过程说明: 项目开始时,创建Trunk,开始1.0.0开发所有小组成员都往Trunk中提交代码当1.0.0......
  • FHQ-Treap的详细图解
    第一部分按值分裂的FHQ-Treap按值分裂的FHQ-Treap的典型例题是P3369【模板】普通平衡树。思路FHQ-Treap是什么?FHQ-Treap是二叉搜索树的一种。比如:FHQ-Treap的思想是什么?分裂->操作->合并下面我们就来慢慢讲这些操作。分裂我们可以根据给定的\(k\)将平衡树分......
  • zookeeper作为注册中心,实现服务注册以及服务发现的思路图解
    一、服务发现 二、服务的发现: ......
  • 图解算法数据结构
    算法复杂度1.算法复杂度旨在输入数据量N的情况下,算法的时间和空间使用情况,体现算法运行使用的时间和空间随数据大小N而增大的速度。 算法复杂度主要可以从时间,空间两个角度评价:时间:假设各操作的运行时间为固定常数,统计算法运行的计算操作的数量,以代表算法运行所需时间......