美文网首页
【设计模式】里氏替换原则

【设计模式】里氏替换原则

作者: 秀叶寒冬 | 来源:发表于2019-08-01 21:07 被阅读0次

以下内容来自《Java设计模式》

里氏代换原则

里氏代换原则由2008年图灵奖得主、美国第一位计算机科学女博士、麻省理工学院的Barbara Liskov(芭芭拉-利斯科夫)教授和卡内基-梅隆大学的Jeannette Wing教授于1994年提出,里氏代换原则以Barbara Liskov教授的姓氏命名。其严格表述如下:如果对每个类型为S的对象o1都有类型T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换o2时程序P的行为没有变化,那么类型S是类型T的子类型。这个定义不太容易理解,因此一般使用它的另一个通俗版定义:

里氏代换原则:所有引用基类的地方必须能透明地使用其子类的对象

里氏代换原则表明,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象,那么它不一定能够使用基类对象。例如我喜欢动物,那我一定喜欢狗,因为狗是动物的子类,但是我喜欢狗,不能据此判定我喜欢所有的动物。

里氏替换原则是实现开闭原则的重要方式之一,由于在使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。

在运用里氏替换原则时应该将父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明方法,在运行时子类实例替换父类实例,可以很方便地扩展系统的功能,无须修改原有子类的代码,增加新的功能可以通过增加一个新的子类来实现。

 
 
 

2 设计模式的七大原则

【设计模式】单一职责原则
【设计模式】开闭原则
【设计模式】里氏替换原则
【设计模式】依赖倒转原则
【设计模式】接口隔离原则
【设计模式】合成复用原则
【设计模式】迪米特法则

相关文章

  • 设计模式之里氏替换原则

    设计模式之里氏替换原则 里氏替换原则(LSP: Liskov Substitution Principle) 定义...

  • 里氏替换原则

    个人博客原文:里氏替换原则 设计模式六大原则之二:里氏替换原则。 简介 姓名 :里氏替换原则 英文名 :Lisko...

  • 装饰器、简单工厂、工厂方法和抽象工厂模式

    设计模式的六大原则 单一职责原则(Single Responsibility Principle) 里氏替换原则(...

  • 设计模式的设计原则

    设计模式的设计原则 面向对象五大设计原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 开闭原则 设计模...

  • 设计模式

    设计模式六大原则[设计模式六大原则(1):单一职责原则][设计模式六大原则(2):里氏替换原则][设计模式六大原则...

  • 设计模式 里氏替换原则

    设计模式 里氏替换原则继续里氏替换原则。上回栗子为正方形不能被长方形继承,这次,具体 子类必须实现父类的方法 类图...

  • Swift设计模式----目录

    面向对象设计原则: 开闭原则 单一职责原则 依赖倒置原则 接口分离原则 迪米特法则 里氏替换原则 面向对象设计模式...

  • 设计模式-六大原则

    转载自 设计模式六大原则 目录:- 设计模式六大原则(1):单一职责原则- 设计模式六大原则(2):里氏替换原则-...

  • 设计模式六大原则

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...

  • 设计模式6大原则

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...

网友评论

      本文标题:【设计模式】里氏替换原则

      本文链接:https://www.haomeiwen.com/subject/zachdctx.html