软件设计----LisKov替换原则(LSP)

LisKov替换原则的定义:一个软件实体如果使用的是一个基类的话,一定适用于其子类,而且根本不能觉察出基类对象和子类对象的区别。

1)怎么理解上面的概念?就是我们程序设计的子类型能够完全替换父类型,而不会让调用父类型的客户程序从行为上有任何改变。

2)这条原则的意义是什么?这条原则主要是为了保证代码对扩展开放,只要做到子类可以完全替代基类的行为,那么新增的具体子类在重载父类时,就不会对客户代码带来任何不良影响,因而实现了对扩展开放。

在设计的时候,我们就可以使用这个原则,来判断我们设计的子类是否合理。思考:正方形设计成矩形的子类,行不?

时间: 2024-11-19 00:04:22

软件设计----LisKov替换原则(LSP)的相关文章

敏捷软件开发:原则、模式与实践——第10章 LSP:Liskov替换原则

第10章 LSP:Liskov替换原则    Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type). 10.1 违反LSP的情形 10.1.1 简单例子 对LSP的违反导致了OCP的违反: struct Point { double x, y;} public enum ShapeType { square, circle }; public class Shape { private ShapeType type; public Shape(Shape

敏捷软件开发 – LSP Liskov替换原则

Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(basetype). 违反LSP的情形 对于LSP的违反常常会导致以明显违反OCP的方式使用运行时类型检查.通常,会使用一个显式的if语句或者if/else链去确定一个对象的类型,以便于可以选择针对该类型的正确行为. struct Point { double x, y;} public enum ShapeType { square, circle }; public class Shape { private Shap

深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP

前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第3篇,里氏替换原则LSP(The Liskov Substitution Principle ). 英文原文:http://freshbrewedcode.com/derekgreer/2011/12/31/solid-javascript-the-liskov-substitution-principle/ 开闭原则的描述是: Subtypes must be substitutable for their ba

软件设计6大原则

1.开闭-原则:对于一个软件实体(类,模块,函数等)来说,应该可以扩展,但不可以修改. 对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification). 2.单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因. 软件设计就是要发现职责并且把这些职责相互分离,如果你可以想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离. 3.迪米特法则 4.里氏代换原则 子类必须能够替换掉其父类. 例

Liskov替换原则

Liskov替换原则是一个关于设计父类和子类关系的原则. 它的定义很有数学感: 若对每个类型S的对象o1,都存在一个类型T的对象o2,使得在所有针对T编写的程序P中,用o1替换o2后,程序P的行为功能不变,则S是T的子类型. 这个很类似于高等数学的根基极限的定义: 一个数列a,对于任何给定的一个正数e,存在一个正整数N,当整数n大于N的时候,a(n)-a'的绝对值小于e,则称a'为数列a的极限. 不过个人感觉,这个功能不变定义的相当模糊,功能是一个契约,是一个对客户的承诺,功能的定义很大程度在于

"围观"设计模式(2)--里氏替换原则(LSP,Liskov Substitution Principle)

在面向对象的程序设计中,里氏替换原则(Liskov Substitution principle)是对子类型的特别定义.它由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次会议上名为"数据的抽象与层次"的演说中首先提出. 里氏替换原则的内容可以描述为: "派生类(子类)对象能够替换其基类(超类)对象被使用." 以上内容并非利斯科夫的原文,而是译自罗伯特·马丁(Robert Martin)对原文的解读.其原文为: Let be a property

"围观"设计模式(2)--里氏替换原则(LSP,Liskov Substitution Principle)

在面向对象的程序设计中.里氏替换原则(Liskov Substitution principle)是对子类型的特别定义.它由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次会议上名为"数据的抽象与层次"的演说中首先提出. 里氏替换原则的内容能够描写叙述为: "派生类(子类)对象能够替换其基类(超类)对象被使用." 以上内容并不是利斯科夫的原文,而是译自罗伯特·马丁(Robert Martin)对原文的解读. 其原文为: Let be a prope

转载:软件设计的七大原则

设计模式遵循的一般原则: 1.开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修 改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在 保持系统一定稳定性的基础上,对系统进行扩展.这是面向对象设计(OOD)的基石,也是最重要的原则. 2.里氏代换原则(Liskov Substitution Principle,常缩写为.LSP)(1).由Barbar Li

谈谈到底什么是抽象,以及软件设计的抽象原则

我们在日常开发中,我们常常会提到抽象.但很多人常常搞不清楚,究竟什么是抽象,以及如何进行抽象.今天我们就来谈谈抽象. 什么是抽象? 首先,抽象这个词在中文里可以作为动词也可以作为名词.作为动词的抽象就是指一种行为,这种行为的结果,就是作为名词的抽象.Wikipedia 上是这么定义抽象的: Conceptual abstractions may be formed by filtering the information content of a concept or an observable