前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象的设计原则-"里氏替换原则"

面向对象的设计原则-"里氏替换原则"

作者头像
别明天就今天吧
发布2020-09-08 07:55:21
8280
发布2020-09-08 07:55:21
举报

"里氏替换原则"是类的设计原则之一,我们使用"3H"学习法对其进行拆解;

why(目的):为什么要学习"里式替换原则",我们都知道面向对象的三大特性:封装、继承、多态,该原则就是对良好的"继承关系"定义了一些规范,通过学习理解后可以写出更健壮、更具扩展性的程序;

how(方法):怎么学习"里氏替换原则",方式很多:比如看书、上网找资料,先理解概念,然后实践代入场景,最后输出理解;

what(本质):"里式替换原则"到底是什么?

接下来我们开始进行具体的学习;

概念:LSP,"里式替换原则",凡是在父类出现的场景中,将父类替换为子类,程序逻辑不变,反之则未必可以。

1.子类需要实现父类的抽象方法

2.子类尽量不要重写或覆盖父类中已经实现的方法

3.子类重载父类方法时,子类输入参数>=父类输入参数&子类输出参数<=父类输出参数

4.子类可以添加自己特有的新方法,原则上不建议

LSP经典例子:正方形和长方形不符合里式替换,设置宽、高后,长方形的体积=宽*高,正方形体积=高*高,子类无法替换父类,不符合里氏替换原则;

在策略模式中,客户端类依赖抽象父类,场景类使用时传入具体的策略子类,子类都实现了父类的抽象接口,可以互换,这就符合里式替换原则;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 别明天就今天吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档