`
jingliankui123
  • 浏览: 105645 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

里氏代换原则

 
阅读更多

里氏代换原则

“里氏代换原则是Barbara Liskov女士在1988年发表的,具体数学定义比较复杂,你可以查相关资料,它的白话翻译就是一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,

而且它察觉不出父类对象和子类对象区别。也就是说,在软件里面,把父类都替换成它的了类,程序的行为没有变化,简单地说,子类型必须能够替换掉它们的父类型。”

    

里氏代换原则(LSP):子类型必须能名替换掉它们的父类型。

 

下面是大话设计模式的对话,我感觉很生动有趣。

 

“这好像是学继承时就要了解的概念,子类继承了父类,所以子类可以以父类的身份出现。”

“是的,我问你个问题,如果在面向对象设计时,一个鸟类,一个是企鹅类,如果鸟是可以飞的,那么企鹅是鸟吗?企鹅可以继承鸟这个类吗?”

“企鹅是一种特殊的鸟,尽管不能飞会晤它也是鸟呀,当然可以继承。”

“哈,你上当了。我说的面向对象设计时,那就意味着什么呢?子类拥有父类所有非private的行为和属性。”

鸟会飞企鹅不会飞。尽管在生物学分类上,企鹅是一种鸟,便在编程世界里,企鹅不能以父类-鸟的身份出现,因为前提说所有鸟都能飞,而企鹅飞不了,所以,企鹅不能继承鸟类。”

                    

哦,你的意思我明白了,我受了直觉的影响。小时候上课时老师一再强调,像鸵鸟、企鹅等不会飞的动物也是鸟类。

“也正因为有了这个原则,使得继承利用成为了可能,只有当子类可以替换掉父类,软件单位功能不受到影响时,父类才能真正被利用,而子类也能够在父类的基础上增加新的行为。比方说,猫是继承动物类的,以动物的身份拥有吃、喝,跑、叫等为,可当某一天,我们需要狗、牛、羊也拥有类似的行为,由于它们都是继承于动物,所以除了更改实例化的地方,程序其他处不需要改变。”

“我的感觉,由于有里氏代换原则,才使得开放-封闭成为了可能。”小菜说。

“这样说是可以的,正是由于子类型的可替换性才使用父类型的模块在无需要修改的情况下就可以扩展。不然还谈什么扩展开放,修改关闭呢。再回过头来看依赖倒转原则,高层模块不应该依赖低层模块,两个都应该依赖抽象,对这句话你就会有更深入的理解了。”

“哦,我明白了,依赖合围其实就是谁也不要依靠谁,除了约定的接口,大家都可以灵活自如。还好,她没有问我如何修收音机,收音机里都是些电阻、三极管,电路等等东东,全都焊接在一起,我可不会修的。”小菜庆幸道。

 

  • 大小: 16.8 KB
  • 大小: 82.3 KB
  • 大小: 20.9 KB
分享到:
评论

相关推荐

    里氏代换原则案例程序LSP.zip

    里氏代换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,由芭芭拉·里科夫(Barbara Liskov)在1988年提出。该原则规定,子类必须能够替换它们的基类,并且在软件系统中不会产生任何...

    java的里氏代换原则

    里氏代换原则是面向对象设计的基本原则之一,源自于著名数学家贝努利·里氏的一个概念。在Java编程中,它对于理解和构建可扩展、健壮的软件系统至关重要。简单来说,里氏代换原则(LSP,Liskov Substitution ...

    里氏代换原则原文

    里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表的一篇文章《Data Abstraction and Hierarchy》里面提出来的,主要阐述了有关继承的一些原则,也就是什么时候应该...

    第二十八讲:基础三里氏代换原则

    **第二十八讲:基础三里氏代换原则** 在面向对象设计中,三里氏代换原则(Liskov Substitution Principle,简称LSP)是一个核心的设计原则,它由芭芭拉·里科夫(Barbara Liskov)在1988年提出。这个原则是类型继承...

    里氏替换原则Demo

    里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,它是由美国计算机科学家芭芭拉·里科夫(Barbara Liskov)提出的。这个原则强调的是在软件工程中,子类型必须能够替换它们的...

    c++里氏替换原则说明1

    C++ 里氏替换原则详解 C++ 里氏替换原则是指在面向对象编程中,子类对象可以替换其基类对象的使用,而不影响程序的逻辑正确性。这个原则是由Barbara Liskov提出的,她认为在子类继承基类时,子类对象应该可以替换...

    里氏代换原则_动力节点Java学院整理

    里氏代换原则是面向对象设计的基本原则之一,它的核心思想是确保软件系统的各个组件能够灵活替换而不影响整体系统的稳定性。这一原则由Barbara Liskov在1988年提出,因此也被称为Liskov替换原则(LSP)。在Java和...

    13丨软件设计的里氏替换原则:正方形可以继承长方形吗?.pdf

    里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,由Barbara Liskov在1988年提出。该原则指出,子类型必须能够替换它们的基类型而不影响程序的正确性。这意味着在软件系统中,...

    Java23种基本的设计模式整料整理学习源码示例zip

    里氏代换原则(Liskov Substitution Principle) 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的...

    24种设计模式介绍与6大设计原则

    而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科 3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真...

    面向对象设计原则Java概要.ppt

    里氏代换原则  里氏代换原则定义 里氏代换原则(Liskov Substitution Principle, LSP)指出,子类必须能够替换它们的基类,而不影响程序的正确性。这意味着子类对象可以在任何基类对象被预期出现的地方进行替换,...

    面向对象程序设计六大原则

    面向对象程序设计六大原则是软件开发中至关重要的指导思想,它们包括“开-闭”原则、里氏代换原则、依赖倒转原则等,旨在提高软件的灵活性、可维护性和可扩展性。以下是对这些原则的详细解释: 1. **开-闭原则 ...

    设计模式Demo

    而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科 3、依赖倒转原则(Dependence Inversion Principle) 这个是开闭原则的基础,具体内容:真...

    软件设计的七大原则.doc

    软件设计的七大原则是软件设计的精髓所在,这七大原则分别是开闭原则、里氏代换原则、依赖倒置原则、接口隔离原则、合成/聚合复用原则、迪米特法则和抽象类原则。 一、 开闭原则(OCP) 开闭原则是指一个软件实体...

    java设计模式五大原则.doc

    Java 设计模式五大原则是软件设计中非常重要的原则,它们是:开-闭原则、里氏代换原则、依赖倒转原则、接口隔离原则和迪米特法则。这些原则都是软件设计的基石,它们指导我们如何设计出更加灵活、可维护、可扩展的...

    面向对象的设计的原则 电子版

    在面向对象设计中,有七个基本原则,即单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则和迪米特法则。 1. 单一职责原则(SRP):一个类只负责一个功能领域中的相应职责。单一职责...

    软件设计的七大原则

    这些原则包括开闭原则、里氏代换原则、依赖倒置原则、接口隔离原则、合成/聚合复用原则、迪米特法则和抽象类原则。这些原则的目的是为了提高软件系统的灵活性、适应性、稳定性和延续性。 一、 开闭原则(OCP) 开...

    程序设计的七大原则

    按照里氏代换原则,答案是否定的,因为正方形的一些行为会违反长方形的行为(例如,正方形无法通过改变宽高而不等比例调整尺寸)。 #### 三、依赖倒置原则 (Dependence Inversion Principle) 依赖倒置原则的核心...

    软件工程阶段性报告原则

    以下主要探讨五个关键的设计原则:单一职责原则、开闭原则、里氏代换原则、依赖倒转原则以及合成复用原则。 1. 单一职责原则(Single Responsibility Principle, SRP) 该原则强调一个类或模块应只有一个引起其变化...

    Java与模式(清晰书签版) 设计模式 part3

    第7章 里氏代换原则 第8章 依赖倒转原则 第9章 接口隔离原则 第10章 合成、聚合复用原则 第11章 迪米特法则 第12章 简单工厂模式 第13章 工厂方法模式 第14章 抽象工厂模式 第15章 单例模式 第16章 .......

Global site tag (gtag.js) - Google Analytics