其他分享
首页 > 其他分享> > 软件构造之LSP原则

软件构造之LSP原则

作者:互联网

Barbara Liskov (1939- )
MIT
http://www.pmg.csail.mit.edu/~liskov
美国第一位计算机科学方向的女博士
2008年图灵奖获得者
在这里插入图片描述

提出了第一个支持数据抽象的面向对象编程语
言CLU,对现代主流语言如C++/Java/Python
/Ruby/C#都有深远的影响。她所提炼出来的
数据抽象思想,成为软件工程的重要精髓之一。
她提出的“Liskov替换原则”,是面向对象最
重要的几大原则(SOLID)之一。

  1. LSP的含义

里氏替换原则(Liskov Substitution Principle, LSP)的定义和主要思想如下:由于面向对象编程技术中的继承在具体的编程中过于简单,在许多系统的设计和编程实现中,我们并没有认真地、理性地思考应用系统中各个类之间的继承关系是否合适,派生类是否能正确地对其基类中的某些方法进行重写等问题。因此经常出现滥用继承或者错误地进行了继承等现象,给系统的后期维护带来了不少麻烦。这就需要我们有一个设计原则来遵循,它就是替换原则。

LSP指出:子类类型必须能够替换掉它们的父类型、并出现在父类能够出现的任何地方。它指导我们如何正确地进行继承和派生,并合理地重用代码。此原则认为,一个软件实体如果使用一个基类的话,那么一定适用于其子类,而且这根本不能察觉出基类对象和子类对象的区别。

  1. LSP的内容

*子类型可以增加方法,但不可删

*子类型中重写的方法必须有相同或子类型的返回值

*子类型中重写的方法必须使用同样类型的参数

*子类型中重写的方法不能抛出额外的异常

同时,这也可以体现在方法的规约上面。

Same or stronger invariants 更强的不变量
Same or weaker preconditions 更弱的前置条件

Same or stronger postconditions 更强的后置条件

标签:原则,构造,LSP,类型,软件,父类,重写,替换
来源: https://blog.csdn.net/asdfsfjkn/article/details/118513817