设计原则之里式替换原则

里式替换原则

设计原则


1.概念及理解

  • 原意:使用基类的指针或引用的函数,必须是在不知情的情况下,能够使用派生类的对象。
  • 理解:父类能够替换子类,但子类不一定能替换父类。并且子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说,在代码中可以将父类全部替换为子类,程序不会报错,也不会在运行时出现任何异常,但反过来却不一定成立。
  • 应用:在继承类时,务必重写(Override)父类中所有的方法,尤其需要注意父类的 protected 方法(它们往往是让您重写的),子类尽量不要暴露自己的 public 方法供外界调用。

2.优点

  • 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。
  • 提高代码的重用性及可扩展性。
  • 提高产品或项目的开放性。

3.说明

  • 提到父类和子类,我们最先想到的可能就是继承,但在Java中,提倡不用继承,原因如下:
    • 1).继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法。
    • 2).降低代码的灵活性,容易出现牵一发而动全身的效果。
    • 3).增强了耦合性。当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能需要代码重构。
  • 这时我们就需要加入里式替换原则,其包括以下含义:
    • 1).子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
    • 2).子类中可以增加自己特有的方法。
    • 3).当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
    • 4).当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

可能我们在进行代码编写时,未遵循里式替换原则,项目也在好好地运行,造成一种没必要遵循里式替换原则的错觉,但是这回大大增加出现问题的几率。在实际应用中,我们应该遵循里式替换原则,在理解及认知后,避免出现问题的几率和提高代码安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值