第 5 章 会修电脑不会修收音机 —— 依赖倒转原则

抽象不应该依赖细节,细节应该依赖抽象。针对接口编程,不要针对实现编程。

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

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

为什么要叫倒转?

面向过程的开发是,为了使得代码可以复用,一般都会把这些常用代码写成许许多多函数的程序库,这样我们在做新项目是,去调用这些底层的函数就可以了。比如我们做的项目大多是要访问数据库,所以我们就把访问数据库的代码写成了函数,每次做新项目是就去调用这些函数,这就叫高层模块依赖底层模块。

里氏替换原则

子类型必须能够替换掉它们的父类型。

一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

只有子类可以替换掉父类,软件单位的功能不受到影响是,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

依赖倒转其实可以说是面向对象设计的标志,用哪种语言编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之就是过程化的设计了。

时间: 2024-11-09 13:39:17

第 5 章 会修电脑不会修收音机 —— 依赖倒转原则的相关文章

[Python设计模式] 第3~5章 单一职责原则/开放-封闭原则/依赖倒转原则

单一职责原则 就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏. 软件设计真正要做的许多内容,就是发现职责并把哪些职责相互分离.如果你能够想到多余一个的动机去改变一个类,那么这个类就具有多余一个的职责,就应该考虑类的职责分离. 开放-封闭原则 开放-封闭原则,是说软件实体(类,模块,函数等)应该可以扩展,但是不可修改.即对

不得不转,修电脑军规20条

最近买了部安卓的手机,google nexus5 系统是安卓4.4.2. 刚到手就发现链接wifi有问题,一直在获取ip(obtaining ip...)和验证.试过恢复出厂 重启 各种都不管用,只有设置静态ip才可以,但是不能一直这样子呀!! 查了下路由器,路由器已经分配了地址.所以最大可能就是安卓手机上拿到这个地址没有成功写入配置文件,为什么没有写入呢,就是权限的问题了,不明白为什么google会出现这个错误. 因为不熟悉安卓系统,所以查了好几天,终于在一个外国网站上发现了下面这个解决办法,

修电脑

从小不学好,长大修电脑.举头望明月,低头修电脑.春眠不觉晓,醒来修电脑.生当做人杰,死亦修电脑.远上寒山石径斜,寒冬深夜修电脑.夜夜思卿不见卿,原来卿在修电脑.诸位朋友如相问,就说我在修电脑.三十功名尘与土,一万月薪修电脑.垂死病中惊坐起,今天还要修电脑.人生自古谁无死,来生继续修电脑.众里寻他千百度,蓦然回首,那人正在修电脑    电脑万岁

IT狗受够了:你才是修电脑的

想到IT,大家的第一反应应该就是:这不是修电脑的吗?当IT狗面对这群不识货的人时只想说:你才是修电脑的! 据说,在人群中放眼望去,哪位是IT,一眼就能看出来. 久坐不起面容憔悴,脸上一抹压抑已久的闷骚,格子衬衫质朴中散发着苦味,间歇性情绪不稳,永久性眼圈发黑.神秘而沉默,纯正IT黯淡风. 身为一枚IT,曾经的你满怀抱负,曾经的你身怀绝技,技惊四座. 现在在公司,每天浇花.修电脑.装软件.偶尔大展身手恢复一下网络. 经初步了解,IT同仁们80%的亲朋好友都不知道做IT和修电脑的区别.执手相看泪眼,

关于打印机共享的注意事项——又被叫去修电脑了

周末有位女同学说她家重新配置了一台电脑,打印机共享不了,问我会不会,虽然咱是程序员,看在同学的份上也没说我只写代码,不修电脑,就帮忙远程看看 qq远程只能远程一台电脑,不能同时远程两台电脑,用两个qq也不能,想给他弄个teamviewer,嫌麻烦,就没弄. IP没错,也能ping通,但就是连不上打印机,额,我想想! 不会是因为防火墙开了吧?关上,没效果,还是连不上! 不会是端口号错了吧?修改端口号,也没连上! 使用IP地址+打印机名称,也连不上? 她就跑来跑去,一会儿远程这台电脑,一会儿远程那台

第2章 面向对象的设计原则(SOLID):3_依赖倒置原则

3. 依赖倒置原则(Dependence Inversion Principle,DIP) 3.1 定义 (1)要依赖抽象,不要依赖具体的实现类.简单的说就是对抽象(或接口)进行编程,不要依赖实现进行编程,这样就降低了客户与实现模块间的耦合.包含3层含义: ①高层模块不应依赖低层模块,两者都应该依赖于抽象 ②抽象不应该依赖细节 ③细节应该依赖于抽象 (2)何为“高层模块”和“低层模块” ①“低层模块”:每个逻辑的实现都是原子逻辑组成,不可分割的原子逻辑就是低层模块.一般和具体实现相关. ②“高层

敏捷软件开发:原则、模式与实践——第11章 DIP:依赖倒置原则

第11章 DIP:依赖倒置原则 DIP:依赖倒置原则: a.高层模块不应该依赖于低层模块.二者都应该依赖于抽象. b.抽象不应该依赖于细节.细节应该依赖于抽象. 11.1 层次化 下图展示了一个简单的层次化方案: 高层的Policy层使用了低层的Mechanism层,而Mechanism层又使用了更细节的Utility层.它存在一个隐伏的错误特征,那就是:Policy层对于其下一直到Utility层的改动都是敏感的.依赖关系是传递的. 下图展示了一个更为合适的模型: 每个较高层次都为它所需要的服

程序员不是修电脑的

1.不怎么会做PPT 2.我也不会P图 3.电脑坏了也是别人修的 4.我只会写一点程序 5.后台开发很久没做了 不记得了 6.外包公司不要找我 7.不接受到处出差 8.diaosi创业不要打电话 9.做项目我写方案 请先付定金 10.机器太差跑不动程序不能怨程序员 11.不要考我语法 我不懂什么这里有个逗号那里没有逗号的区别 原文地址:http://blog.51cto.com/yixianwei/2108794

修电脑的方法不对

今天有一个工友的电脑的 Windows 7 突然进不了系统了.具体症状是开机后,有正常的 Windows 启动动画,启动动画完成后,两个显示器均显示成黑色(或灰色),有鼠标指针,可以移动,数字键盘灯可以交替开关,就是进不了登录界面,更不用说桌面了,按 Ctrl+alt+del 无反应. 自己尝试强制重启(按住主机开关5秒),情况依旧. 无奈找 IT 部的同学帮忙,先是折腾了 F8 的 “最后一次安全配置”,然后进 “安全模式” 将近期安装的软件进行了卸载,有一个是百度的(工友说不是她主动安装).