软件设计之里氏代换原则

里氏代换原则:

              一个软件实体如果使用一个基类的话,那么一定适用于其子类,而且这根本不能察觉出基类对象和子类对象的区别。

       里氏代换原则是继承复用的基石。只有当衍生类可以替换掉基类,软件单位的功能不会受到影响时,基类才能真正的被复用,而衍生类也才能够在基类的基础上增加新的行为。

 

       Java语言对里氏代换原则的支持:

              里氏代换原则要求凡是基类型使用的地方,子类型一定适用,因此子类型必须具备基类型的全部接口。或者说,子类型的接口必须包括全部的基类型的接口,而且还有可能更宽。如果一个java程序破坏这一条件,JAVA编译器会给出编译时错误。

 

Java语言对里氏代换原则支持的局限:

      JAVA编译器不能检查一个系统在实现和商业逻辑上是否满足里氏代换。

 

里氏代换原则在设计模式中的体现:

1.       策略模式:策略模式的策略间的互换性是对里氏代换原则的遵守。

2.       合成模式:里氏代换原则是合成模式能够成立的基础。

3.       代理模式:代理模式能够成立的关键,就在于代理模式与真实主题模式都是抽象主题角色的子类。

 

 

从代码重构角度看里氏代换原则:

       里氏代换原则讲的是基类与子类的关系,只有当这种关系存在时,里氏代换原则才存在,反之不存在。假设有AB两个类违反了里氏代换原则的设计,可以使用下面2种重构方案找选择一种处理:

1.       创建一个新的抽象类C,作为两个具体类的超类,将AB的共同行为移动到C中,从而解决AB行为不完全一致的问题。

2.       BA的继承关系改写为委派关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值