最近一段时间在为了完成Sponsor布置的作业努力阅读中,刚巧几天之前看到了关于依赖倒置原则的一些问题,所以先按照一般的习惯说一说我理解的依赖倒置原则是什么好了。
关于依赖倒置原则,大概就是说,高层的逻辑不应该依赖于底层逻辑的实现,就像是不应该把人作为闹钟的一个参数一样,如果这样的话就相当于将闹钟和闹钟绑死在一起,这无疑意味着每个人都对应着一个闹钟,闹钟想要存在必须要有一个人,可是现实生活中这显然是不正确的一个实例,这是对于现实生活我们想一想大概就清楚的部分,其实一直刚让人觉得不是那么确切的业务逻辑要怎么避免高层依赖底层的情况出现就是很让人头疼的事情了,有的时候用面向对象的设计方式还是有可能会造成违反这一原则的情况产生,而且还可能是在代码完成后很久的某一天才发现是违反了,一直没有想到什么太好的办法,所以说这个地方等想到了的时候我再更新好了。
关于依赖倒置原则不太准确但是应该能很精确的形容遵从和违反的好处与坏处的例子是我突然想到的,昨天和女朋友在东直门去南锣鼓巷的路上,看到了很多之前政府做的公共自行车,但是几乎没有人骑,貌似在ofo,摩拜单车出现之后,骑的人就更少了。然后突然在想一个问题,大家觉得,做这个公共自行车的人是不是也在骑ofo或者摩拜单车呢?哈哈,开个玩笑。大家想想看为什么之前推广这个公共自行车的时候没什么人,但是ofo也好,摩拜也好,用了没有多久的时间就让很多人都开始了自己的自行车之旅了呢?首先来说,押金是类似的,不同的是什么?我听了不止一个同事和我说,ofo好啊因为它可以随便停车,不用停到定点的位置,你想想看,如果我要工作的地方是在两个停车点的中间,但是我想骑车去上班,为了不让自己花冤枉钱,我只能先骑到那个停车点然后再走去公司,那我骑车的意义在哪?说起来也是,那么大概就能得到是因为公共自行车的模式的问题才让我们觉得使用这个自行车很难或者说很不实用。这样的模式使得人和自行车的耦合太大了,人必须要遵从自行车的规则才能使用自行车,可这显然是不合情理的一件事,我想没有一个人愿意这样的吧,除非刚好规则正好是符合自己的利益条件的时候。相比之下,ofo和摩拜所做的刚好是把人和自行车之间的这个耦合解开了,人不需要过于遵从这份规则,只需要随意停车就好,有这个规则在的也是必须的,这样把耦合降到最低也让更多的人乐于使用了。
其实说到这两个的对比也刚好是为了阐述一下DIP的内容,让自己可以有更加深刻的记忆,说起来公共自行车,其实也不是像我说的没有考虑过吧,也许是因为当时局限在当时的科技,智能手机没有太普及之类的一些其他的客观因素,不过这样的高耦合却是的的确确存在的。