Java设计原则—里氏替换原则(转)】的更多相关文章

里氏替换原则(Liskov Substitution Principel)是解决继承带来的问题. 继承的优点: 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性: 提高代码的重用性: 子类可以形似父类,但又异于父类: 提高代码的可扩展性: 提高产品或项目的开放性. 继承的缺点: 继承是侵入性的,只要继承就必须拥有父类的所有属性和方法: 降低代码的灵活性,子类必须拥有父类的属性和方法,让子类增加了约束: 增强了耦合性,当父类的常量.变量和方法被修改时,必须考虑子类的修改. 定义: 所有…
里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一. 里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现. LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为. 如此,问题产生了:“我们如何去度量继承关系的质量?” Liskov于1987年提出了一个关于继承的原则 “Inheritance should ensure that any pro…
里氏替换原则(Liskov Substitution Principel)是解决继承带来的问题. 继承的优点: 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性: 提高代码的重用性: 子类可以形似父类,但又异于父类: 提高代码的可扩展性: 提高产品或项目的开放性. 继承的缺点: 继承是侵入性的,只要继承就必须拥有父类的所有属性和方法: 降低代码的灵活性,子类必须拥有父类的属性和方法,让子类增加了约束: 增强了耦合性,当父类的常量.变量和方法被修改时,必须考虑子类的修改. 定义: 所有…
package dubbo.wangbiao.project.ThreadAndSocket.designprinciples.lishitihuanyuanze.k0; //长方形 public class Rectangle { private long height; public long getHeight() { return height; } public void setHeight(long height) { this.height = height; } public l…
今天,我们再来学习 SOLID 中的"L"对应的原则:里式替换原则. 里氏替换原则 里氏替换原则(Liskov Substitution Principle):派生类(子类)对象能够替换其基类(超类)对象被使用.通俗一点的理解就是"子类是父类",举个例子,"男人是人,人不一定是男人",当需要一个父类类型的对象的时候可以给一个子类类型的对象:当需要一个子类类型对象的时候给一个父类类型对象是不可以的! 里氏替换原则的本质:接口的实现必须满足调用者对接…
2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误或异常).只有这样,父类才能被真正复用,而且子类也能够在父类的基础上增加新的行为.也只有这样才能正确的实现多态 (2)当一个类继承了另一个类时,子类就拥有了父类中可以继承下来的属性和操作.但如果子类覆盖了父类的某些方法,那么原来使用父类的地方就可能会出现错误,因为表面上看,它调用了父类的方法,但实际…
里氏代换原则由2008年图灵奖得主.美国第一位计算机科学女博士Barbara Liskov教授和卡内基·梅隆大学Jeannette Wing 教授于1994年提出,所以使用的是这位女博士的性命名的一个设计原则. 里氏替换原则(Liskov Substitution Principle, LSP):所有引用父类的地方必须能使用其子类的对象. 从这个概念可以看出这个原则是面向对象多态的一种具体实践.通俗来讲 “老爸能干的事情,儿子都能干”, 因为儿子继承了老爸的基因. 反过来讲就不对了,时代在变化,…
里氏替换原则LSP(Liskov Subsituation Principle) 里氏替换原则定义 所有父类出现的地方可以使用子类替换并不会出现错误或异常,但是反之子类出现的地方不一定能用父类替换. LSP的四层含义 子类必须完全实现父类的方法 子类可以自己的个性(属性和方法) 覆盖或实现父类的方法时输入参数可以被放大 覆盖或实现父类的方法时输出结果可以被缩小 LSP的定义含义1--子类必须完全实现父类的方法 假设如下场景:定义一个枪支抽象类,一个场景类,三个枪支实现类,一个士兵类.此处,三个枪…
里氏替换原则(LSP)定义:在任何父类出现的地方都可以用它的子类类替换,且不影响功能.解释说明:其实LSP是对开闭原则的一个扩展,在OO思想中,我们知道对象是由一系列的状态和行为组成的,里氏替换原则说的就是在一个继承体系中,对象应该具有共同的外在特性,使用LSP时,如果想让我们的程序达到一个父类出现的地方都可以用它的子类来替换且不影响功能,那么这个父类也应该尽量声明出子类所需要的一些公共的方法,父类被子类替换之后,会比较顺利,那么为什么说它是对开闭原则的一个扩展呢?因为我们在开闭原则中说尽量使用…
一.里氏替换原则 如果说实现开闭原则的关键步骤就是抽象化,那么基类(父类)和子类的继承关系就是抽象化的具体实现,所以里氏替换原则就是对实现抽象化的具体步骤的规范.即:子类可以扩展基类(父类)的功能,但不能改变父类原有的功能. 定义:一个软件实体如果适用一个父类的话,那一定是适用于其子类,所有引用父类的地方必须能透明地使用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变. 里氏替换原则最核心得一句话就是:子类可以扩展基类(父类)的功能,但不能改变父类原有的功能.它包含着四种含义: 子类可以实…