设计模式之六大原则——里氏替换原则(LSP)

前端之家收集整理的这篇文章主要介绍了设计模式之六大原则——里氏替换原则(LSP)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

里氏替换原则(Liskov Substitution Principel)是解决继承带来的问题。

继承的优点:

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

继承的缺点:

定义:

所有引用基类的地方必须能透明地使用其子类的对象。

通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必就能适应。

含义:

在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了里氏替换原则。

如果子类不能完整地实现父类方法,或者父类的某些方法在子类中发生了“畸变”,则建议断开父子继承关系,采用依赖、聚集、组合等关系代替继承。

  • 子类可以有自己的个性

  • 覆盖或实现父类方法时输入参数可以被放大
  • 如果子类的前置条件较小,子类在没有覆写父类方法的前提下,子类方法被执行了,这会引起业务逻辑混乱,因为在实际应用中父类一般都是抽象类,子类是实现类,你传递一个这样的实现类就会“歪曲”了父类的意图,引起一堆意想不到的业务逻辑混乱。

  • 覆盖或实现父类方法输出结果可以被缩小
  • 目的:

    采用里氏替换原则的目的就是增强程序的健壮性,版本升级是也可以保持非常好的兼容性。即使增加子类,原有的子类还可以继续运行。在实际项目中,每个子类对应不同的业务含义,使用父类作为参数,传递不同的子类完成不同的业务逻辑。


    http://www.cnblogs.com/muzongyan/archive/2010/08/03/1791466.html

    原文链接:https://www.f2er.com/javaschema/283951.html

    猜你在找的设计模式相关文章