依赖倒转原则 -- 强执若 or 弱执强?

2020-08-26 10:57:32 浏览数 (1)

修电脑的小故事

故事是别人的,不过放在这里也是很应景啦。 故事是这样的: 有个适龄小伙子,他还单着。有一天,他喜欢的那个姑娘突然给他打电话,说她的电脑坏了,一用就蓝屏警告。姑娘讲着讲着就要哭出来了,小伙子那个急啊,他心疼啊。所幸,小伙子凭借高超的技术,当机立断:内存条坏了。但是又苦于所爱隔山水啊,所以他只能当远程指挥官了。他指导姑娘:扒开电脑主机后盖,把内存条扯出来,然后开机看看,如果还蓝屏,那就把那条内存条插回去,把另一条拔出来。一顿操作猛如虎,姑娘在小伙无私又认真的指挥下,把电脑修好了。 过两天,姑娘又打电话给小伙子,说她收音机坏了,希望小伙能再远程指导一次。但是这次小伙无能了,他不行了,他不会,太难了。他放弃了,他把电话挂了。姑娘很失望。

但是姑娘不知道,电脑,是松耦合,强内聚的,哪个部件坏了就换哪个,但是收音机不一样,收音机是紧耦合的,牵一发而动全身,收音机没声音,可能是扩音器坏了,可能是信号接收其坏了,可能是解频罢工了···毕竟她是外行嘛,悲催的小伙子。

那么,就要切入到我们的正题了,松耦合、强内聚的电脑,是怎么组装的呢?没错,本篇,我们来聊聊组装电脑哈哈哈哈☺☺

从电脑的组装出发

像内存条这种东西啊,管你是哪家生产的,只要符合规格,再比如鼠标、键盘、电池(电池得配套),反正哪个部件坏了就换哪个部件。为什么这些部件不论插在哪一台电脑上都能使用呢?是这些部件配合电脑主板设计,还是电脑主板配合这些零部件设计呢?

想来答案已经很明确了。就拿CPU来说,CPU的对外都是针脚式或触点式的标准接口,只要接口设计好,内部再复杂和外界也没有关系。哪个主板要插CPU,那就得和CPU的接口对上。那么这时候如果电脑的内存条坏了,就不该成为你更换麦克风的理由。这不是开玩笑,要是收音机的外放坏了,可能得整部收音机脱胎换骨了。

PC的接口始终是有限的,但是软件设计得好,却可以不断地拓展的。

是时候上概念了:依赖倒转原则

  • 抽象不应该依赖于细节,细节应该依赖于抽象。
  • 低层实现不应该依赖于高层实现,高层实现也不应该依赖于低层实现,它们都应该依赖于抽象。

是不是有点吃惊,刚刚明明说内存,主板,CPU,什么什么的。哈哈,别绕晕了,我可从没说过主板要依赖于内存哦。插内存的地方,还有个插槽呢,插鼠标的地方,还有个USB接口呢。这些接口,就是抽象。

说白了,就是要针对接口编程,不是实现。

总结

依赖倒转原则可以说是面向对象编程的标志,用哪种语言来实现并不重要,殊途同归。只要都是针对抽象编程,而不是针对细节编程,所有的依赖关系都是终结于抽象类,那么便是面向对象的设计。

usb

0 人点赞