设计模式里氏代换原则

Posted 码农搬砖_2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式里氏代换原则相关的知识,希望对你有一定的参考价值。

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

//长方形类

public class Rectangle

setWidth(int width)
    this.width=width;

setHeight(int height)
    this.height=height

// 正方形类

public class Square extends Rectangle


setWidth(int width)
this.width=width;
this. height=width;

setHeight(int height)
this.setWidth(height);

来一段测试代码:

public void resize(Rectangle r)
while(r.getHeight()<=r.getWidth)
r.setHeight(r.getWidth+1);

把Rectangle 的对象传进去 和 Square 传进去,运行的效果是不一致的,这也就违背了“任何基类可以出现的地方,子类一定可以出现”的原则,这就是里氏代换原则,你理解了吗。

以上是关于设计模式里氏代换原则的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学习Java设计模式 | 软件设计原则篇:里氏代换原则

面向对象设计原则之里氏代换原则

西游记之设计模式原则——里氏代换原则

设计原则之里氏代换原则

设计模式SOLID - 里氏代换原则

面向对象设计原则之里氏代换原则