LSP到底有什么用?
里氏替换是什么,网上一搜到处都是,但是没人说说到底有什么用,我刚开始理解的时候,就明白这东西可以替换所有父类型,子类型能做父类型的所有事情,理解仅此而已。后来仔细思考一番,终于想明白这东西有什么用了,假设老板让你拓展客户端的一个功能,里边有个Vehicle类,他想让大家使用Car,并且只增填功能,不可以修改。我们定义了一个Car类继承Vehicle类,为了保障代码原来部分正确执行,我们要使得Car的不变性至少为Vehicle的安全性(说不定某个参数或者返回值和其他引用指向的是一个对象,Vehicle都做了防御性拷贝,Car更应该做),Car的方法规格说明要更强,Vehicle能做的Car必须能做(原因参考企鹅不是鸟)。但是要注意,不能给Vehicle的属性增加无效的更强不变性(比如四个轮子需要同速这种,原因请参考正方形不是矩形),这样,你可以把原来的文档中Vehicle的定义直接换成Car的定义,添加新功能就可以啦(注意,别把Vehicle v = new Vehicle()换成Vehicle v = new Car(),这样仅仅是徒劳,屁用没有)
LSP到底有什么用?相关推荐
- 如何在B站视频发送时间轴空降弹幕
在B站看视频,为了节省时间,我们会选择直接跳过片头,或者直接跳转到精彩的时间位置,俗称空降- 空降的传统做法是,先来的观众,在片头发送正片开始时间的弹幕,后面的观众按照弹幕显示的空降时间,点击视频时间 ...
- 当系统扩展遇到违背OO的里氏原则(LSP)的时候怎么办 ?
先转一篇写得很好的文章:http://www.cnblogs.com/CodeGuy/archive/2012/03/26/2418803.html ========================= ...
- 五大原则之----里氏替换原则(LSP)
阐述:子类型(subtype)必须能够替换掉它们的基类型(basetype) 先提出一个问题:正方形是不是一种特殊的长方形(IS - A关系)? 先不要回答这个问题,看下面的分析. 理解:LSP原则的 ...
- [翻译]LSP程序的分类
翻译的太垃圾,不建议其它人阅读本文. Note:LSP现在已经不推荐使用.自windows8和windows Server2012开始,使用Windows Filtering Platform. Wi ...
- 5G承载网,到底有哪些关键技术?
戳蓝字"CSDN云计算"关注我们哦! 作者 | 小枣君 来源 | 鲜枣课堂 之前小枣君给大家介绍了5G承载网的基本知识(链接:5G承载网到底有什么不同?).今天,我们再来看看5G ...
- 设计模式之七大原则——里氏替换原则(LSP)(三)
里氏替换原则(Liskov Substitution Principel)是解决继承带来的问题. 4 里氏代换原则(Liskov Substitution Principle, LSP) 4.1 什么 ...
- 电脑网络故障:LSP造成?
问题: 1.什么是LSP??? 删除了什么才导致了不能上网??? LSP 为什么能影响网络??? 其内部的原理机制是什么??? 网络连接正常但无法上网(能ping通外网DNS)解决方法 ...
- 淘宝程序员拿几十万工资,写出来的代码到底怎么样?
来源:淘系技术 我们编写的代码,除了用于机器执行产生我们预期的效果以外,更多的时候是给人读的,这个读代码的可能是后来的维护人员,更多时候是一段时间后的作者本人. 如何能够写出优雅整洁且不让人[哔--] ...
- 深度思考:到底什么是抽象?
到底什么是抽象? 前言: 不要为了抽象而抽象. --<Tony Bai · Go 语言第一课> 1 回顾软件设计的六大原则 一.单一职责原则(SRP: Single responsibil ...
最新文章
- 模拟Spring如何在WEB中运行
- VB数据库经典实例总结(二)
- tornado学习笔记day02-进阶与提升
- 极狐(GitLab)发布首款“GitNative”DevOps云一体化解决方案
- “false”类型转换:string类型转boolean - 代码篇
- Update From 用法
- NumPy、TensorFlow和scikit-learn简介
- EclipseLink+H2 快速搭建JPA开发环境
- Oracle 创建表空间与用户
- C++基础::shared_ptr 编程细节(一)
- f2fs学习笔记 - 3. F2FS文件系统布局
- 用php表示掷骰子两次比大小,php实现的中秋博饼游戏之掷骰子并输出结果功能详解...
- 云真机兼容性测试方案
- 人口红利提前消失?今年经济会如何?权威回应来了
- 面试题之心理测试题及答案
- SIM卡PIN码管理
- fetch bulk collect limt 学习
- 千与千寻主题曲beep函数版
- 使您成为Windows专家的一些学习习惯
- 用户信息管理系统测试报告
热门文章
- php 遍历对象数组,js中遍历对象(5种)和遍历数组(6种)的方法总结
- 西门子贿赂门:数十家咨询公司名单曝光
- 珠宝销售软件服务器,珠宝首饰进销存*管理软件
- python day10
- html5调整文字段落之间的距离,文本段落行距怎么调整 在cdr怎样调整文本的行距...
- 五子棋 黑石_黑石快速笔记
- 将公众号临时链接转永久链接的五种方法
- python dashboard django_python终极篇 ---django 模板系统
- redis 锁机制 ab测试
- 小程序--民宿(首页(房屋列表、房屋详情)、订单(订单列表、详情)、个人中心(登录、优惠券))