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

在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……

依赖倒转原则:A,高层模块不应该依赖低层模块,两个都应该依赖抽象;B,抽象不应该依赖细节,细节应该依赖抽象。

为什么会叫依赖倒转?

  面向过程开发时,为了使常用代码可以复用,一般都会把这些常用代码写成许许多多函数的程序库,这样我们在做新项目时,去调取这些底层函数就好了。比如我们做的项目大多都要访问数据库,所以我们把访问数据库的代码写成了函数,每次做新项目的时候都去调取这些函数。这就是高层模块依赖低层模块,问题也就出在这里。我们要做新项目的时候,发现高层业务逻辑代码都一样,但客户缺希望使用不同的数据库去实现,这时候就出现麻烦了。我们都希望可以利用这些高层模块,但是高层模块都是和底层模块绑定在一起的,没办法复用这些高层模块,这就非常糟糕了。PC里,如果CPU、内存、硬盘如果都依赖主板,主板一坏就都不能用了。反过来,如果内存坏了,也不能造成其他部件不能用才对。而如果不管高层模块还是低层模块,它们都依赖于抽象(接口或者抽象类),只要接口稳定,那么任何一个更改,都不用去担心其他受到影响,这就使得无论高层还是低层模块都可以被很容易的复用,这才是最好的方法。

为什么依赖了抽象,就不怕更改了呢?

  里氏替换原则:子类型必须能够替换掉它的父类型。只有当子类型能够替换掉父类型,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能再父类的基础上增加新的行为。鸟是父类,可以飞,但是企鹅不会飞,所以企鹅就不能是鸟的子类。

  

 

posted @ 2015-10-28 14:55  荒古禁地  阅读(177)  评论(0编辑  收藏  举报