程序设计原则
如果说代码是我们手中的兵器,那设计原则就是我们使用兵器时的界定。这些原则能够使得我们兵器保持更加锋利、锐不可挡。
设计原则绵延二十余年,经受住了时间的考验。
设计原则沉淀到现在,目前主要有六大设计原则。分别是单一职责原则;开闭原则;里氏替换原则;接口隔离原则;依赖倒置原则;最少知道原则。
本文主要介绍里氏替换原则。
里氏替换原则,原文是这么描述的:If S is a subtype of T , then objects of type T may be replaced with objects of type S , without breaking the program.
意思就是说如果S是T的子类,那么程序中的T都可以用S替换,而不破坏程序的逻辑性和正确性。
其实,里氏替换原则很好理解,就是用来指导继承关系中子类该如何设计的原则。核心思想就是“design by Contract”。这里的约定包括:函数声明要实现的功能;对输入、输出、异常的约定;甚至包括注释中所罗列的任何特殊说明。
课上讲的一个例子:子类抛出的异常是父类的子类还是父类?
可以根据定义用反证法进行验证:类B为类A的子类,假定一段程序调用类A,捕获类A抛出的异常。那么,根据里氏替换原则,只将类A替换成类B。如果类B抛出的异常比类A抛出的异常范围更大的话,那么这段程序势必捕获不到这个异常。所以,类B抛出的异常一定是类A抛出异常的子类,才能满足里氏替换原则。
版权声明: 本文为 InfoQ 作者【南宫煌】的原创文章。
原文链接:【http://xie.infoq.cn/article/944cd99f6455c578f1a8c18db】。未经作者许可,禁止转载。
评论