Liskov替换原则与继承
来源:互联网 发布:linux怎么查看root密码 编辑:程序博客网 时间:2024/04/19 10:13
如果一件事情你不能用自己的语言说清楚,那只能说你没有真正的理解它。“只可意会不可言传”在科学领域应该只是一种假象。
----废话结束----
一直以来都认为自己搞清楚了何时用继承,何时用聚合,也清楚了所谓的Liskov替换原则的意义。直到今天看完了“高效程序员的十个习惯”以后才明白,才认识到自己以前的理解是
混沌含糊的。
何时用继承呢?大部分情况我们仅仅为了利用另一个已存在的类的功能而继承,或者几个类有功能近似,或者代码重复,就提取个公用类,然后再继承之。长期以来,我都是这样的理解
。如果从实现上来说,这样是没有问题的,复用了代码,减少了重复。但如果用Liskov原则来审查设计就会发现,这样的实现其实是很欠妥的。是滥用继承的一种。下面我们具体分析。
Liskov原则要求我们,“任何能用基类的地方都应该可以无差别的使用其继承类替换”。“滥用的继承”模式也可以从实现层面遵循此规则,因为它也是继承。但由于脱离了继承的本意,这样的实现最终会得到差强人意的结果。比如基类中A方法是要求”站力“,而继承B却实现成了”坐下“,从语法和实现上都没有问题,但却违背了设计继承的本意。这也是滥用继承也不会被有效察觉的原因:它不会主动报错,错误在潜台词里。
继承,应该”不要求更多,不承诺更少“,也就是语意上的一致,而不仅仅是方法签名,只有IS-A的情况才可以使用继承。
类似上面所说的这些”被滥用的继承“,最好的方式就是改造成聚合实现。虽然可能稍微麻烦一点点,但这满足设计的基本原则。
通过对Liskov的理解,让设计更清晰,遵从对象本意设计,而不是语法与技巧。 0 0
- LISKOV替换原则与继承
- Liskov替换原则与继承
- Liskov替换原则(LSP)
- Liskov替换原则(LSP)
- Liskov替换原则--LSP
- Liskov替换原则
- Liskov替换原则--LSP
- Liskov替换原则--LSP
- Liskov替换原则--LSP
- Liskov替换原则
- 学习笔记:Liskov替换原则和继承的使用
- 【10】LSP:LisKov替换原则
- Liskov替换原则(LSP)
- LisKov替换原则(LSP)
- Liskov替换原则(C#)
- Liskov替换原则(LSP)
- Liskov替换原则(转)
- 软件设计原则----LisKov替换原则(LSP)
- HDU 1398 n由i^2(i=1,2,3..17)组成的方案数(母函数 || 完全背包)
- UDP协议的两个主要方法sendto和recvfrom详解
- 在eclipse下用gradle打包的经验总结!
- java中小数的加减乘除
- android(2)(循环发送短信)
- Liskov替换原则与继承
- LINUX libusb无驱设计使用介绍
- MySQL导入EXCEL表格数据
- 红帽老版本下载地址
- getParameterValues只能取到第一个
- 新账号开张
- 设计模式解析与实战之工厂方法模式
- Hibernate配置文件中hiberante.hbm2ddl.auto四个参数的配置
- 3.Maven工程开发