美文网首页JavavaJ设计产品运营商业模式Java设计模式
面象对象设计6大原则之三:里氏替换原则

面象对象设计6大原则之三:里氏替换原则

作者: Java技术栈 | 来源:发表于2017-08-13 11:46 被阅读37次

里氏替换原则LSP),The Liskov Substitution Principle

定义

所有引用基类的地方必须能透明地引用其子类的对象,即子类可以拓展父类的功能,但不能修改父类已有的功能。

也就是说在父类出现的地方子类也可以出现,并且替换为子类也不会报错,引用者根本不需要知道引用的是父类还是子类,但是反过来就行不通了,子类出现的地方父类就不一定能出现并代替子类。

里氏替换原则的特点:

1、子类可以拓展父类的功能,但不能修改父类已有的功能,如果修改了父类已有的功能,可能导致父类定义的功能在子类覆盖后不适用。

2、重载父类的方法时,子类的方法形参应该比父类更宽松。

3、实现父类的抽象方法时,子类的方法输出结果应该比父类更加严格。

4、子类可以有自己独特的私有方法,但是需要注意的是,如果子类不能完全实现父类的方法,或者父类的某一些方法在子类中已经不适用,这种情况则建议断开父子关系,使用组合等方式代替继承出现。

里氏替换原则的优缺点:

1、合理得用类的继承关系,提高了代码的复用性,但也增强了类与类之间的耦合性。

2、通过建立抽象,运行过程中具体实现取代抽象,保证了系统的可拓展性。

3、只要继承父类就拥有父类的全部属性和方法,这样减少了代码重复创建量共享了代码但也约束了子类的行为,降低了系统灵活性。

我们平时开发中可能没考虑这么多,乱覆盖父类的方法,没有多少联系的继承等很多打破了里氏替换的原则,这样不顾后果的后果就是我们写的程序存在着潜在的漏洞,而且出问题的机率也会显著提升。

相关文章

  • 面象对象设计6大原则之三:里氏替换原则

    里氏替换原则(LSP),The Liskov Substitution Principle 定义 所有引用基类的地...

  • 里氏替换原则

    个人博客原文:里氏替换原则 设计模式六大原则之二:里氏替换原则。 简介 姓名 :里氏替换原则 英文名 :Lisko...

  • 设计模式

    设计模式六大原则[设计模式六大原则(1):单一职责原则][设计模式六大原则(2):里氏替换原则][设计模式六大原则...

  • 装饰器、简单工厂、工厂方法和抽象工厂模式

    设计模式的六大原则 单一职责原则(Single Responsibility Principle) 里氏替换原则(...

  • 设计模式-六大原则

    转载自 设计模式六大原则 目录:- 设计模式六大原则(1):单一职责原则- 设计模式六大原则(2):里氏替换原则-...

  • 设计模式六大原则

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...

  • 设计模式6大原则

    目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒...

  • 设计原则之6大原则

    目录:设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置...

  • 面向对象的设计的7大原则

    面向对象的设计原则(7大原则) ★ 1、开闭原则: 是总纲,告诉我们要对扩展开放,对修改关闭; ★ 2、里氏替换原...

  • 设计模式开篇

    设计模6大原则 单一原则 接口隔离原则 里氏替换原则 (子类可以扩展父类功能,但是不要改变父类) 依赖倒置(关联关...

网友评论

    本文标题:面象对象设计6大原则之三:里氏替换原则

    本文链接:https://www.haomeiwen.com/subject/rsgsrxtx.html