里氏替换原则(LSP)和合成/聚合复用原则(CARP)

里氏替换原则(LSP)
LSP是继承复用的基石。只有当衍生类可以替换掉基类,软件单位的功能不会受到影响时,基类才能真正被复用,而衍生类也才能在基类的基础上增加新的行为。
里氏替换原则讲的是基类和子类的关系。只有当这种关系存在时,里氏代换关系才存在,反之则不存在。如果两个基本类A和B之间的关系违反了里氏代换原则的设计,则有两种重构方案:
1.创建一个新的抽象类C,作为两个具体类的超类,将A和B的共同行为移动到C中。
2.从B到A的继承关系改写为委派关系。(CARP)
合成/聚合复用原则(CARP)
(CARP)就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到复用已有功能的目的。
合成和聚合的区别:二者均是关联的特殊种类。聚合用来标示“拥有”关系或整体与部分的关系;而合成则用来标示一种强得多的“拥有”
关系。在一个合成关系里,部分和整体的生命周期是一样的。一个合成的新的对象完全拥有对其组成部分的支配权,包括它们的创建和湮灭等。进一步讲,一个合成的多重性不能超过1,换言之,一个合成关系中的成分对象是不能与另外一个合成关系共享的。一个成分对象在同一时间内只能属于一个合成关系,如果一个合成关系湮灭了,那么所有的成分对象要么湮灭自己所有的成分对象,要么就得将这一责任交给别人(较为罕见)。
只有当每一个S在任何情况下都是一种B的时候,才可以将S设计成B的子类。如果两个类的关系是"Has-A"关系而不是"Is-A"关系,这两个类一定违反里氏代换原则。
只有两个类满足里氏代换原则时,才有可能是"Is-A"关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值