【大话设计模式】笔记——依赖倒转原则

设计模型学习笔记(1) —— 大话设计模式/图说设计模式 文章目录引入:简单工厂模式设计理念单一职责模式开发-封闭原则依赖倒转原则迪米特法则创建型模式工厂方法模式抽象工厂模式建造者模式原型模式单例模式结构型模式适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式行为型模式(VB.NET)观察者模式模板方法模式命令模式状态模式职责链模式行为型模式(C++)解释器模式中介者模式访问者模式策略模式备忘录模式迭代器模式模式总结 引入:简单工厂模式 设计理念 单一职责模式 开发-封闭原则 依赖倒转原则 迪米特法则 创建型模式 工厂方法模式 抽象工厂模式 建造者模式 原 阅读详情

《大话设计模式》之依赖倒转原则。

本节先是通过小菜为妹纸修电脑的例子引出了电脑制造的一个原则:内部封转,明确接口,统一标准。具体说来就是,各个部件的具体实现和制造不尽相同,但是他们都遵循一个接口标准,使得各个部件可以无缝的链接起来;同时在这个接口之上可以进行有限的扩展。电脑配件之间的关系还体现另一个基本原则:强内聚,松耦合。

电脑配件还体现了前面说过两个原则,单一职责原则和开放封闭原则。这里着重强调一个新的原则,叫依赖倒转原则。依赖倒转原则,原话解释是抽象不应该依赖细节,细节应该依赖于抽闲。说白了,就是要针对接口编程,不要对实现编程。回到例子上,主板,cpu等都是针对接口设计的,如果针对实现来设计,内存就要对应到具体的某个品牌的主板,就会出现换内存需要把主板也换了的尴尬。

依赖倒转原则:

A. 高层模块不应该依赖底层模块。两个都应该依赖抽象。

B. 抽象不应该依赖细节。细节应该依赖抽象。

为什么需要依赖倒转?面向对象开发时,为了使得常用代码可以复用,一般都会把这些代码写出许多的函数程序库,新项目中去调用这些底层的函数就可以了。比如数据库访问模块等。问题也出在这里,当有新项目时,发现业务逻辑的高层模块都是一样的, 但客户却希望使用不同的数据库或存储信息的方式。我们希望再次利用这些高层模块,但高层模块与低层模块绑定在一起的,没法复用这些高层模块,这就麻烦了。而如果不管高层还是低层模块,它们都依赖于抽象,具体一点就是借口或者抽象类,只要借口是稳定的,那么任何一个的更改都不用担心受其它受到影响。这就使得无论高层还是低层模块都可以很容易的被复用。

但为什么依赖了抽象的接口或抽象类,就不怕更改呢?这里需要讲到里氏代换原则。具体说来是一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且察觉不出父类和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。简单来说,子类型必须能够替换掉他们的父类型。为什么需要这样呢?只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

书中举了一个例子,猫是继承动物类的,以动物的身份拥有吃、喝、跑、叫等行为。当某一天,我们需要狗、牛、羊也拥有类似的行为,由于他们都是继承与动物,所以除了更改实例化的地方,程序其他处不需要改变。


再回头来看依赖倒转原则,高层模块不应该依赖低层模块,两个都应该依赖抽象,如下图:






《大话设计模式》笔记 “策略模式还有些什么优点? 阅读详情

相关推荐

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

【大话设计模式】依赖倒转原则

依赖倒转原则

_ 280

PyFluent进阶实战:自动化密闭几何(Watertight)网格生成

本文深入探讨了如何利用PyFluent实现自动化密闭几何(Watertight)网格生成。通过Python脚本控制Fluent Meshing工作流,工程师可以高效、一致地完成从几何导入、局部尺寸定义、面网格生成到边界层设置和体网格输出的全过程,从而将复杂的CFD前处理工作转化为可重复、可集成的自动化流程,极大提升仿真效率和知识复用性。

t8u9v0w1x的博客 578

Darren大话设计模式之依赖倒转原则

各位博友晚上好,又到了晚上的这个时间,感谢大家一直对Darren博客的支持,希望这篇文章对你有所帮助: 这几天一直在看设计模式:简单工厂模式,策略模式,单一职责原则,开放封闭原则,今天我学习了依赖倒转原则,再此和大家分享一下学习心得。 抽象不应该依赖细节,细节应该依赖于抽象。说白了就是针对接口编程,而不是针对实现编程。 依赖倒转原则: 高层模块不应该依赖与低层模块,两个都应该依赖抽象。 ...

白雾霾 181

SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字

可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插...

骚团长的博客 1万+

汇川AM系列PLC玩转CNC:手把手教你用File模式读取G代码文件(附避坑指南)

本文详细介绍了如何使用汇川AM系列PLC的File模式读取G代码文件,涵盖从CAD设计到PLC配置的全流程。特别针对路径格式、文件类型等常见问题提供避坑指南,帮助工程师快速实现CNC加工的自动化控制。

weixin_33582311的博客 407

大话设计模式学习笔记---依赖倒转原则

重要语录 语录一: 抽象不应依赖细节,细节应该依赖抽象 语录二:  针对接口编程,不要对实现编程 语录三: 高层模块和低层模块都应该依赖于抽象 语录四: 程序中所有的依赖关系都是终止于抽象类或者接口,就是面向对象的设计,否则就是面向过程的设计 一句话概括 依赖关系终止于抽象类或接口,而子类继承自抽象类和接口,可以通过扩充子类功能来实现功能的扩展

Terryjourneys的博客 478

40.8K星爆火!Crawl4AI实战突破Cloudflare 5秒盾:AI反爬新范式,爬虫再也不被封

Crawl4AI的爆火(40.8K星)不是偶然——它解决了爬虫工程师最头疼的反爬问题,让爬虫从“体力活”变成“脑力活”,不用再花费大量时间配置指纹、编写行为脚本。但要注意:爬虫必须遵守目标网站的robots.txt协议,不得用于非法爬取数据(比如用户隐私、商业机密)。合理使用技术,才能长久落地。如果你在使用Crawl4AI时遇到具体问题(比如绕过更严格的反爬、批量爬取配置),欢迎在评论区交流,我会第一时间分享解决方案!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1604

大话设计模式笔记——开放-封闭、依赖倒转、里氏替换原则、装饰 概念

开放-封闭原则:        软件实体(类、函数、模块等)应该可以扩展,但是不可以修改!(我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。构建抽象来隔离那些变化)精神所在:面对需求,对程序的改动是通过新增代码进行的,而不是更改现有的代码。里氏替换原则:        子类必须能替换掉它的父类。    也正因为有了这个原则,使得继承复用成为了可能,只有当...

qq_34270913的博客 210

如何在 Ubuntu 22.04 上安装和配置 VNC 服务器?

VNC(Virtual Network Computing)是一种图形桌面共享系统,通过网络允许用户控制另一台计算机的桌面环境。无论你是系统管理员还是开发人员,VNC 都可以在远程访问桌面环境时提供极大的便利。在安装和配置 VNC 服务器之前,我们需要确保系统是最新的,并安装一些基本工具。这些命令将更新你的软件包列表并升级所有已安装的软件包,以确保你拥有最新的安全修复和功能更新。

网络技术联盟站 4003

YOLOv11改进 | 注意力篇 | YOLOv11引入24年最新的ELA注意力机制,并构建C2PSA_ELA

为了解决这些限制,本文介绍了一种高效的本地注意力(ELA)方法,实现了一个简单的结构,大幅度的性能改善。我们精心设计了ELA中的三个超参数,产生了四个不同的版本:ELA-T,ELAB,ELA-S和ELA-L,以满足不同视觉任务的具体要求,如图像分类,目标检测和语义分割。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 1286

《大话设计模式之依赖倒转原则》

//看的也不是很懂,先把里面的重点摘抄一下先 抽象不应该依赖于细节,而细节应该依赖于抽象。针对于接口来编程,不要对于实现来编程。//个人理解:对于一个个程序功能模块之间通过接口来进行耦合,下次需要升级or改进是,只要依照接口来提供就ok鸟~~~~~~ 【高层模块不应该依赖底层模块,两个都应该依赖抽象】//数据调用时,如果写死了MSSQL的数据操作,下次如果搞mysql咋

jwqu的专栏 1130

电池模拟器【 电化学模型深度解析:PNGV模型原理与应用(专业科普版)】

1. 模型起源PNGV(Partnership for a New Generation of Vehicles)模型诞生于1993年美国“新一代汽车合作计划”,旨在提升混合动力汽车电池系统的建模精度。该模型最初针对铅酸电池设计,后经改进广泛用于锂离子电池、镍氢电池等动态特性仿真。2. 模型定位PNGV属于**等效电路模型(ECM)**的进阶版本,介于简单Rint模型与复杂电化学模型(如P2D模型)之间,兼顾计算效率与精度,是BMS(电池管理系统)中SOC/SOH估算的主流选择。PNGV模型凭借。

优快云-新能源汽车研发测试专业博主 1699

大话设计模式阅读笔记-依赖倒转原则

1.依赖倒转原则,也有翻译成依赖倒置原则的。依赖倒转原则,原话解释是抽象不应该依赖细节,细节应该依赖于抽象,这话绕口,说白了,就是针对接口编程,不要对实现编程。 2.里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单的说,子类型必须能够替换掉它们的父类型。也正因为

liupinghui的专栏 412

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大话设计模式笔记 依赖倒转原则

依赖倒转原则, A.抽象不应该依赖细节,细节应该依赖于抽象。 B.高层模块不应该依赖低层模块,两个都应该依赖抽象。 说白了,就是要针对接口(interface)编程,不要针对实现(Class)编程。 里式代换原则(LSP):子类型必须能够替换它们的父类型。 一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面...

weixin_30914981的博客 96

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

《大话设计模式》读书笔记-第5章 依赖倒转原则

1.依赖倒转原则,也叫依赖倒置原则,即高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖于抽象。说白了就是要针对接口编程,不要对实现编程。 2.里氏代换原则(LSP):子类型必须能够替换掉它们的父类型。即一个软件实体如果使用的是一个父类的话,那么一定适用其子类,而且它察觉不出父类对象和子类对象的区别,也就是说,在软件里面,把父类替换成她的子类,程序的行为没有变化。 ...

weixin_34236497的博客 67

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《大话设计模式--单一职责原则、开放-封闭原则、依赖倒转原则》笔记

单一职责原则 1、单一职责原则(SRP):就一个类而言,应该仅有一个引起他变化的原因。 2、如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。 3、软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。 4、如果你能够想到多余的一个动机去改变一个类,那么这个类就...

qq_41790833的博客 256

大话设计模式笔记(三)——单一、开放封闭、依赖倒转、里氏替换四大设计原则

设计模式有六大设计原则:单一原则、开放封闭原则、依赖倒转原则、里氏替换原则、接口隔离原则、 迪米特原则,但按本书的目录来说,它在三至五章讲的是标题的四个原则,接口隔离原则和迪米特原则在之后章节讲解,这里标题的四大原则是按章节来记录的,不是说设计模式只有四大原则。 第三章拍摄UFO——单一职责原则 理论上来说,就一个类而言,应该只有一个引起它变化的原因。一个类存在多个职责时,应该把职责分

咸鱼老罗的博客 865

大话设计模式读书笔记(三) 单一职责原则和开放-封闭原则和依赖倒转原则

大多数时候,一件产品简单一些,职责单一一些。或许是更好的选择 单一职责原则: 就一个类而言,应该有且仅有一个引起它变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。 如果你能想到多于一个的动机去改变这一个类,那么这个类就有多于一个的职责,就应该

xsyfl的博客 463

大话设计模式学习笔记(3,4,5)----单一职责,开放-封闭,依赖倒转,里氏代换原则

由于第3,4,5章讲的是设计模式里面的几个原则,没有讲具体的设计模式,所以我这里就把这三章放在一起写了。不过虽然篇幅短但是由于是原则,这些可是非常重要的。原则性的东西一只手都能数的过来,但是想要完全搞懂并且应用起来其实也是非常困难的,这比我们简单的学习一个设计模式要来的长久。一个好的设计模式必然也会符合这几个设计原则。

秋千不会坠的博客 518

设计模式---单一职责原则、开放封闭原则、依赖倒转原则

        今天工作之余抽空翻了翻大话设计模式第3章到第5章,主要讲了三个设计原则:单一职责原则、开放--封闭原则、依赖倒转原则(依赖倒转原则中还讲了里氏代换原则)。在此做一下笔记,以方便自己忘记的时候回头看一下。         一、单一职责原则         .

weixin_44356698的博客 342

【笔记】大话设计模式-567

依赖倒转原则 装饰模式 代理模式

RandyOliver's House 333

大话设计模式

大话设计模式是以一系列有趣的故事让大家学习到设计模式的精妙所在,其作者认为对于程序员来讲,精彩的代码是如何想出来的,要比看到精彩的代码更加令人期待。

qq_43785212的博客 1968

学习 《大话设计模式》笔记

Java设计模式七大原则 1.开闭原则(Open Close Principle) 2.里氏代换原则(Liskov Substitution Principle) 3.依赖倒转原则(Dependence Inversion Principle) 4.接口隔离原则(Interface Segregation Principle) 5.迪米特法则(...

dengxianji1647的博客 320
上一篇: 【大话设计模式】笔记——开放封闭原则
下一篇: 【APUE】笔记之——进程控制
sdupine
博客等级 码龄15年 3粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值