`
wangyijiangshui
  • 浏览: 85509 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类

2、设计模式之----里氏替换原则

阅读更多

==========================================================================================================

 

里氏替换原则(Liskov Substitution Principle:LSP)

 

1、解释

     中文解释:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为不发生

任何变化,那么类型S是类型T的子类型。(所有引用基类的地方必须能透明的使用其子类的对象)

     英文解释:If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior

of P is unchanged where o1 is substituted for o2 then S is a subtype of T。(Functions that use pointers or references to base classes

must be able to use object of derived classes without knowing it)

     自己理解:里氏替换原则是由于继承机制带来的,产生于子父类之间。该原则是对继承机制的进一步严格规范和要求:子类对象必须能无条件的完全替代父类

对象。而且不会影响程序的变化。(其实,说白了,在编程中大家都用过,就是用子类来代替父类或者接口,但是如果你不按照一定的要求做,替代后程序的执行结果

可能与你替代之前出现差异,为了不出现差异,你在写子类时就必须遵守一定的规则或者条件,这些规则加在一起就组成了”里氏替换原则“,下面一一说明)

 

2、实用范围

     所有需要使用继承机制的地方。

 

3、里氏替换原则对继承机制定义的规范:

     ①、子类必须完全实现父类的方法(在类定义时无论是属性还是方法参数尽量使用父类或接口类型,在使用类创建的对象时传入对应的实现类对象或者子类对象。如果子类不能完整的实现父类的方法,或者父类的某些方法在子类中已经发生“畸变”,则建议断开父子继承关系,转而采用依赖、聚集、组合等关系代替继承)。

 

 

·

 

     ②、子类可以自由扩展(拥有自己的个性,也即有自己的属性和方法),子类对象可以代替父类,但是父类对象不能代替子类对象。

 

     ③、子类覆盖或者实现父类的方法时输入参数可以被放大(子类中的方法输入参数可以和父类方法的输入参数同类型,或者是父类方法输入参数的父类型。保证如果子类与父类方法构成重载时传入子类对象调用的方法仍是父类的方法,如果子类重写了父类的方法,则传入子类对象调用的方法是子类的方法)。

 

     ④、覆写或实现父类的方法时输出结果(返回值)可以被缩小(子类覆写或实现的方法的返回值必须与父类对应方法的返回值同类型或者是父类对应方法的返回值类型的子类)。

 

==========================================================================================================

分享到:
评论

相关推荐

    里氏替换原则Demo

    里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,它是由美国计算机科学家芭芭拉·里科夫(Barbara Liskov)提出的。这个原则强调的是在软件工程中,子类型必须能够替换它们的...

    设计模式之里氏转换原则

    里氏转换原则是设计模式中一个重要的理论基础,它对实现这些模式起到关键的指导作用。 1. **什么是里氏转换原则:** - LSP指出,如果一个软件实体使用的是父类型的引用,那么它应该能透明地使用子类型的实例,而...

    java设计模式---诙谐易懂版

    6. 书中还提到了六大设计原则,包括单一职责原则(Single Responsibility Principle)、里氏替换原则(Liskov Substitution Principle)、依赖倒置原则(Dependency Inversion Principle)、接口隔离原则(Interface...

    23种 设计模式---面向对象的基本原则

    3. 里氏替换原则(Liskov Substitution Principle, LSP):子类型必须能够替换掉它们的基类型。这保证了继承不会破坏原有的程序行为。 4. 接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户端...

    设计模式(六)之里氏替换原则.zip

    里氏替换原则有如下特点: 代码共享,减少创建类的工作量 提高代码的重用性 提高代码的可扩展性 提高产品代码的开放性 继承侵入性 只要继承,必须拥有父类的内容 降低代码的灵活性,子类必须拥有...

    设计模式6大原则:里氏置换原则

    设计模式6大原则:里氏置换原则

    JAVA设计模式之设计原则 ---开闭原则源码

    3. **里氏替换原则(LSP,Liskov Substitution Principle)**:子类必须能够替换它们的基类,而不会导致程序行为的改变。这确保了扩展不会破坏原有的行为。 4. **接口隔离原则(ISP,Interface Segregation ...

    《设计模式--基于C#的工程化实现及扩展》.(王翔).rar.rar

    此外,书中可能还会涉及面向对象设计原则,如单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP),这些都是设计模式背后的重要理论基础。 总的来说,《设计模式--基于C#...

    设计模式培训-strategy

    4. **里氏替换原则**:子类应该可以替换其父类,并且能够保持程序的正确性。 5. **依赖倒置原则**:高层模块不应该依赖于低层模块,而是应该依赖于抽象。同时,抽象不应该依赖于细节,细节应该依赖于抽象。 6. **...

    JAVA设计模式-原则和23种设计模式归纳总结

    本资源首先介绍了设计模式的六大原则,包括单一责任原则、开闭原则、里氏替换原则、接口隔离原则、合成复用原则和最少知道原则。然后,资源对23种设计模式进行了分类和总结,包括创建型模式、结构型模式和行为型模式...

    设计模式---东拼西凑(基础)

    - **里氏替换原则(LSP)**:确保子类可以替代其父类,这有助于保持代码的一致性和可维护性。 - **Parnas原则(PLP)**:主张用户只需关注接口,而不必关心其实现细节。 #### 三、面向对象的三个核心特性 面向对象...

    设计模式--java版.rar

    同时,设计模式也有助于提升系统的可扩展性和可维护性,因为它们遵循了良好的设计原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。 在Java开发中,熟练掌握和运用设计模式不仅可以提升...

    设计模式2-结构型模式&设计模式基本原则

    3. **里氏替换原则**:子类必须能够替换掉它们的基类,而不影响程序的正确性。 4. **依赖倒置原则**:依赖于抽象,不要依赖于具体实现。 5. **接口隔离原则**:客户端不应该依赖它不需要的接口;一个类对另一个类的...

    设计模式 之 里氏替换原则

    里氏替换原则的定义有: 如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。 定义很完备,但也不太好...

    24种设计模式介绍与6大设计原则-PDF版 查阅方便

    3. 里氏替换原则:子类必须能够替换掉它们的基类,不影响程序的正确性。 4. 接口隔离原则:避免使用宽泛的接口,尽量细化接口,每个接口只做一件事。 5. 依赖倒置原则:依赖于抽象而不是具体实现,使得系统更灵活,...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)(0520_).rar

    包括如何在C#项目中组织代码,遵循SOLID原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则),以及如何利用设计模式优化软件架构。 "扩展"部分可能涉及如何在现有设计模式的基础上进行创新...

    13丨软件设计的里氏替换原则:正方形可以继承长方形吗?.pdf

    里氏替换原则(Liskov Substitution Principle,简称LSP)是面向对象设计的基本原则之一,由Barbara Liskov在1988年提出。该原则指出,子类型必须能够替换它们的基类型而不影响程序的正确性。这意味着在软件系统中,...

    设计原则与设计模式

    面向对象设计原则:面向对象设计原则、开闭原则、里氏替换原则、里氏替换原则、里氏替换原则

    设计模式培训-strategy.pdf

    - **里氏替换原则**:确保子类可以替换其基类,并且程序的行为不变,这有助于维护代码的一致性和稳定性。 - **依赖倒置原则**:提倡高层模块不应依赖于低层模块,而应依赖于抽象;同时,抽象不应依赖于细节,细节应...

    Head First设计模式---中文版

    书中不仅介绍了这些模式,还强调了面向对象设计的原则,如单一职责原则、开闭原则、里氏替换原则、依赖倒置原则以及接口隔离原则。通过《Head First设计模式》的阅读,读者能够理解如何在实际项目中应用这些模式,...

Global site tag (gtag.js) - Google Analytics