设计模式需要遵循的几种设计原则(二)

依赖倒转原则
概念:
A:高层模块不应该依赖地层模块,两个都应该依赖抽象.
B:抽象不应该依赖细节,细节应该依赖于抽象.
C:针对接口编程,不能针对实现编程.
通俗解释:
假设现在电脑坏了,我们肯定要逐个排查到底是哪个地方坏了,然后把坏掉的部分拔掉换成好的,设想一下假如不能换部件,有一个地方坏了就得全部换,那是不是一件很蛋疼的事情.而我们的电脑主板在设计的时候就预留了接口,这就是遵循了依赖倒转原则,我不会因为风扇坏了就去换主板,也不会因为主板坏了去把其他的零件换一个遍,其实这些都是一些概念性的东西,说起来简单做起来难,大致大家都明白,但是一到细节就懵逼.

里氏代换原则
概念:子类必须能够替换掉他们的父类型.
通俗解释:
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别.也就是说,把父类都替换成它的子类,程序的行为没有变化.也正是这个原则,使得继承复用成为了可能,只有当子类可以替换掉父类,软件功能不受影响的时候,父类才能真正被复用,而子类也能在父类的基础上增加新的行为.假如子类不做重写,那么它调用父类方法的时候其实就是多态的体现(向上转型).
正是由于里氏代换原则,才使得开放-封闭原则成为了可能,由于子类型的可替换性才使得父类类型的模块在无需修改的情况下就可以拓展,不然还谈什么拓展开放,修改关闭呢,再回头看看依赖倒转原则,高层模块不应该依赖低层模块,讲的不就是继承吗,我子类不管自己改的再花会影响到父类以及我父类的另一个儿子吗,显然是不可能的.

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

后话:
这个是我一边看着<<大话设计模式>>一边理解总结加摘抄写的笔记,但愿自己没事儿回头了还能看看感慨一下,哈哈!!!

你可能感兴趣的:(设计模式需要遵循的几种设计原则(二))