# 设计原则与思想--- 里式替换原则(LSP)与多态的区别

简介: # 设计原则与思想--- 里式替换原则(LSP)与多态的区别

1.如何理解“里式替换原则”?



SOLID 中的“L”对应的原则:里式替换原则。里式替换原则的英文翻译是:Liskov Substitution Principle,缩写为 LSP。


用中文描述出来,是这样的:子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。


里式替换原则是用来指导,继承关系中子类该如何设计的一个原则。理解里式替换原则,最核心的就是理解“design by contract,按照协议来设计”这几个字。父类定义了函数的“约定”(或者叫协议),那子类可以改变函数的内部实现逻辑,但不能改变函数原有的“约定”。这里的约定包括:


  • 函数声明要实现的功能;
  • 对输入、输出、异常的约定;
  • 甚至包括注释中所罗列的任何特殊说明。


2.LSP原则与多态的区别



虽然从定义描述和代码实现上来看,多态和里式替换有点类似,但它们关注的角度是不一样的。多态是面向对象编程的一大特性,也是面向对象编程语言的一种语法。它是一种代码实现的思路。


里式替换是一种设计原则,是用来指导继承关系中子类该如何设计的,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑以及不破坏原有程序的正确性。


3.讨论区总结



@辣么大


LSP的意义:


  • 改进已有实现。例如程序最开始实现时采用了低效的排序算法,改进时使用LSP实现更高效的排序算法。
  • 指导程序开发。告诉我们如何组织类和子类(subtype),子类的方法(非私有方法)要符合contract。
  • 改进抽象设计。如果一个子类中的实现违反了LSP,那么是不是考虑抽象或者设计出了问题。


@年轻的我们


里氏替换就是子类完美继承父类的设计初衷,并做了增强

相关文章
|
3月前
|
设计模式 算法 开发者
设计模式问题之最小知识原则(迪米特法则)对代码设计有何影响,如何解决
设计模式问题之最小知识原则(迪米特法则)对代码设计有何影响,如何解决
|
6月前
|
人工智能
里式替换原则(LSP)
里式替换原则(LSP)
74 0
|
设计模式 搜索推荐 安全
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
137 0
|
设计模式
设计模式(7) -- 合成复用原则和七大原则总结
设计模式(7) -- 合成复用原则和七大原则总结
135 0
设计模式(7) -- 合成复用原则和七大原则总结
设计原则与思想 --- 单一职责原则(SRP)
设计原则与思想 --- 单一职责原则(SRP)
设计原则与思想 --- 单一职责原则(SRP)
|
设计模式 缓存 NoSQL
设计模式六大原则(二)----里式替换原则
设计模式六大原则(二)----里式替换原则
213 0
设计模式六大原则(二)----里式替换原则
|
设计模式 前端开发 关系型数据库
本着什么原则,才能写出优秀的代码? (二)
本着什么原则,才能写出优秀的代码? (二)
206 0
本着什么原则,才能写出优秀的代码? (二)
|
SQL 程序员 测试技术
本着什么原则,才能写出优秀的代码? (一)
本着什么原则,才能写出优秀的代码? (一)
160 0
本着什么原则,才能写出优秀的代码? (一)
|
设计模式
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
206 0
面向对象基本原则(2)- 里式代换原则与依赖倒置原则
面向对象基本原则(1)- 单一职责原则与接口隔离原则 面向对象基本原则(2)- 里式代换原则与依赖倒置原则 面向对象基本原则(3)- 最少知道原则与开闭原则