设计原则 — L 里氏替换原则
含义
子类对象能够替换父类对象出现的任何地方,并保证原来程序的逻辑行为不变及正确性不被破坏。
这个规则比较简单,重点是替换、不变;当子类要替换父类时,不变父类定义的功能,功能包括任何说明等。
换句话来说就是按照协议来设计,子类按照父类的协议来设计。是对继承父类、实现接口的开发者的约束。
优点
按照原则来做可保证程序实现的功能与对外提供的接口、父类定义的功能是一致的,可增强可读性,减少开发的阅读理解时间、利于开发之间合作(增进开发之间的友谊)。
为什么呢?
先说前两点:看定义就可以知道功能,不需要深入实现细节才可了解,无疑可以减少阅读理解时间。像 Spring 许多接口、注释写的很优秀,可读性就强,在代码庞大的情况下也能更易的大致摸清门道。
再说第三点:正常开发流程,双方之间有依赖,由被依赖方先提供接口,依赖方基于接口开发,而不用等到被依赖方实现完。但依赖方如何可以信赖被依赖方的接口呢?若被依赖者允诺按照原则进行实现,保证一致,依赖方就可以信赖被依赖方提供的接口,理想情况依赖方可无后顾之忧。
这样看来里氏替换原则倒是协作者的合作利器。
如何做
从正面来说就是原则的描述,不够具体执行,发现从不可怎么做来阐述更为明晰:
不违背父类声明要实现的功能
不违背父类对输入、输出、异常的约定
不违背父类注释中所罗列的任何特殊说明
不过这条原则简单,平常写代码过程中其实基本也是遵守的。所以平常稍微多加留意下就行了。
《设计模式之美》—— 王争(极客时间)
版权声明: 本文为 InfoQ 作者【Lemoon Can】的原创文章。
原文链接:【http://xie.infoq.cn/article/9abc5d8f298a4ddcb8b267639】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论