LISKOV替换原则与继承

本文深入探讨了Liskov原则,并通过实例分析了滥用继承的潜在问题及改进方法,强调了遵循对象本意设计的重要性,提供了解决方案以提升代码质量和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 何时用继承呢?大部分情况我们仅仅为了利用另一个已存在的类的功能而继承,或者几个类有功能近似,或者代码重复,就提取个公用类,然后再继承之。长期以来,我都是这样的理解
。如果从实现上来说,这样是没有问题的,复用了代码,减少了重复。但如果用Liskov原则来审查设计就会发现,这样的实现其实是很欠妥的。是滥用继承的一种。下面我们具体分析。

      Liskov原则要求我们,“任何能用基类的地方都应该可以无差别的使用其继承类替换”。“滥用的继承”模式也可以从实现层面遵循此规则,因为它也是继承。但由于脱离了继承的本意,这

样的实现最终会得到差强人意的结果。比如基类中A方法是要求”站力“,而继承B却实现成了”坐下“,从语法和实现上都没有问题,但却违背了设计继承的本意。这也是滥用继承也不会被

有效察觉的原因:它不会主动报错,错误在潜台词里。

    继承,应该”不要求更多,不承诺更少“,也就是语意上的一致,而不仅仅是方法签名,只有IS-A的情况才可以使用继承。 

    类似上面所说的这些”被滥用的继承“,最好的方式就是改造成聚合实现。虽然可能稍微麻烦一点点,但这满足设计的基本原则。

    通过对Liskov的理解,让设计更清晰,遵从对象本意设计,而不是语法与技巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值