一、定义
第一次看到这个原则时,给我的印象是通过名字并不能清晰的理解他想要表达的内容,我们想要用一个定义去描述他,我查了很多资料都是对其所含意义的介绍,并没有说一个准确的定义,都是想通过介绍来让读者理解里氏替换原则所想要表达的含义。
既然那么多大佬都不尝试给其一个明确的定义,那么我自己也就不班门弄斧了,我也通过介绍来分享一下他所包含的意义,里氏替换原则(LSP)从维度上说,他只说了两部分内容:对象和对象的动作或行为。
- 对象
子类,里氏替换原则主要是对子类进行约束。
- 对象的动作和行为
子类可以替换基类
二、产生的问题
如果不能合理的利用LSP来指导我们的程序设计、代码编写,我们的代码就会增加很多诸如if等的条件判断,我们也就不得不为了实现某些业务功能,增加大量复杂的应对机制或代码,使我们的系统变得臃肿且难以维护,后面一旦有需求改动,往往我们只是动了一颗螺丝钉,却导致我们整个系统的瘫痪,此类血泪教训犹在耳边,慎记慎记。
三、解决的问题
- 最低层次解决了如何使用继承关系、指导接口及其实现方式。
- 高层次的就是对于软甲架构层面的设计有深刻的意义,在模块与模块,类与类,方法与方法之间都应该考虑LSP的最佳实践。
四、结语
道阻且长,行则将至,行而不辍,未来可期,加油。
原创不易,如果你觉得文章不错,对你的进步有那么一点帮助,那么就给个小心心,如果觉得文章非常对你的胃口,那么欢迎你关注我,或者关注个人的微信公众号 程序猿每日分享,这里有资源,有内推,有和你志同道合的朋友,咱们一起打怪升级。