# 设计原则与思想--- 里式替换原则(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,那么是不是考虑抽象或者设计出了问题。


@年轻的我们


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

相关文章
|
6月前
|
存储 缓存 关系型数据库
提升代码可读性问题之Repository仓储层在细节无关原则中的作用是什么
提升代码可读性问题之Repository仓储层在细节无关原则中的作用是什么
|
6月前
|
设计模式
对抗软件复杂度问题之组合(Composite)方法设计模式是什么,如何解决
对抗软件复杂度问题之组合(Composite)方法设计模式是什么,如何解决
|
8月前
|
设计模式 Java 容器
设计模式之组合模式-创建层次化的对象结构
设计模式之组合模式-创建层次化的对象结构
|
8月前
|
人工智能
里式替换原则(LSP)
里式替换原则(LSP)
92 0
|
设计模式
设计模式中的六种关系以及代码之间的对应
设计模式中的六种关系以及代码之间的对应
174 0
设计模式中的六种关系以及代码之间的对应
|
设计模式 搜索推荐 安全
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
151 0
|
设计模式 Java uml
设计模式---类之间的关系知多少
设计模式---类之间的关系知多少
188 0
设计模式---类之间的关系知多少
设计者模式(22) -- 访问者模式
设计者模式(22) -- 访问者模式
107 0
设计者模式(22) -- 访问者模式
|
设计模式 缓存 NoSQL
设计模式六大原则(二)----里式替换原则
设计模式六大原则(二)----里式替换原则
222 0
设计模式六大原则(二)----里式替换原则
|
设计模式
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
216 0

热门文章

最新文章