软件设计原则
软件设计原则:开闭,里氏替换,依赖倒置,合成复用,接口隔离,迪米特
里氏替换原则:
1987年、面向对象技术的高峰会议
里氏替换原则(Liskov Substitution Principle,LSP)是由芭芭拉·利斯科夫(Barbara Liskov)在1987年提出的。她在1987年的面向对象技术的高峰会议(OOPSLA)上发表的一篇名为《数据抽象和层次》(Data Abstraction and Hierarchy)的文章中首次提出了这一原则1。里氏替换原则是对子类型的特别定义,强调在继承关系中,子类必须能够替换掉父类,并且不会影响程序的正确性2。
里氏替换原则的定义可以描述为:“如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。”简而言之,子类型必须能够替换掉父类型,并且程序的行为不能因此而受影响3。
里氏替换原则的核心思想是:在使用继承时,子类应该保持父类的行为,即子类对象应该能够替换父类对象并且不产生意外的行为。这样才能确保代码的正确性、可靠性和可扩展性3。具体来说,里氏替换原则包括以下几点:
- 子类必须保持父类的接口规范:子类必须实现父类的所有抽象方法,但不能覆盖父类的非抽象方法。
- 子类可以拓展父类的功能:但不能改变父类原有的行为。
- 子类在实现父类方法时:可以引入新的异常,但不能抛出父类方法中未声明的异常3。
里氏替换原则的应用可以提高代码的可维护性、可扩展性和可复用性,同时减少系统中的错误和意外行为。它有助于设计出符合面向对象设计原则的良好设计,并且能够使继承关系更加稳定和可靠
经典按例:正方形不是长方形