码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • DP - OOD - DIP


    DP - OOD - DIP

    文章目录

    • DP - OOD - DIP
      • 概述
      • 含义
      • 符合DIP原则能避免的问题
      • 避免循环依赖问题
      • END

    概述

    面向对象设计中有几个设计原则, 可以避免实现中的坏味道.

    其中之一是 DIP(Dependency Inversion Principle) 依赖倒置原则.

    类(或模块) 都简称为类(class).

    含义

    依赖倒置 - 高层实现不应依赖于底层实现, 两者都应该依赖于抽象. 抽象不应依赖于细节, 细节应依赖于抽象.

    依赖倒置原则, 应用在框架或库的设计中.

    违反依赖倒置原则的程序, 一般是结构化设计的程序. 高层模块需要调用底层模块实现的功能, 而底层模块可能又依赖更底层的模块提供的功能.

    面向对象程序设计时, 可以使用接口来避免违反依赖导致原则.

    e.g. 高层模块使用的是功能基类的指针对应的接口, 在运行时传进来的是具体实例化的子类指针. 这样高层代码就不依赖于具体的子类实现, 在运行时是活的.

    程序中所有的依赖关系都应该中止于抽象类或接口.

    任何变量都不应该持有指向具体类的指针或引用.

    任何类都不应该继承自具体类.

    任何方法都不应该覆盖在基类中已经实现的方法, 即子类中实现的必须是接口(纯虚函数). 这条是理想状态.

    符合DIP原则能避免的问题

    避免循环依赖问题

    如果软件分为多个库(.a 或者 .dll), 如果产生循环依赖, 在新版时, 即使改动只有一个库, 就不得不发布很多库.
    如果不存在循环依赖问题, 假设我们只需要修改一个库, 那修改完这个库, 就发布这1个库作为补丁或升级包就可以.

    END

  • 相关阅读:
    【你不知道的javascript上】1.第二章 词法作用域eval、new Function、with
    (c++)类和对象 下篇
    杂牌行车记录仪mp4恢复案例
    跨境电商业务拓展专用服务器,腾讯云海外轻量应用服务器低至28元
    Maven 打包 jar、war 包配置
    港陆证券:日线9连阴意味着什么?
    小兴教你做平衡小车-stm32程序开发(PWM)
    【排序14:存在重复元素】
    LeetCode(力扣)435. 无重叠区间Python
    pdfh5在线预览pdf文件
  • 原文地址:https://blog.csdn.net/LostSpeed/article/details/126957604
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号