`
ohmygodlzl
  • 浏览: 21460 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

OOD之Liskov替换原则

阅读更多
这个系列是早前发布在部门wiki上的,引导组里的兄弟入门OOD,希望同样对刚刚走到OOD门前的同学有用。

对这个原则,我的体会不深,主要是因为没有在实际项目中看到违背它的后果,不过作为Bob叔叔OOD基础原则的最后一个,还是要在这里介绍一下。这个原则的说明如下:
子类型必须能够替换掉他们的基类型。

    听起来是一个很简单的描述,基于继承的设计中似乎子类型总是可以替换它的基类型。但要注意,基类是一个抽象,用子类对基类进行替换要保证使用这个抽象的类的行为不被破坏。还是用手机充值完成通知商户那个例子来说明:



    假设,在定义接口MerchantCallback的时候,notifyMerchant方法并没有声明抛出异常,因而使用这个抽象的MobileChargingServiceImpl类中没有做相应的异常处理。但是有一天,我们需要添加一个新的商户通知实现,这个商户的通知机制会抛出异常,那么这个子类的添加就会破坏LSP原则,因为它为MobileChargingServiceImpl带来了风险,它没有完全遵循MerchantCallback的接口契约,它不能完全替换它的基类。
    实践中遵循LSP原则,我觉得只要在添加子类的时候很小心地看一下基类与基类使用者之间的契约,保证不会违反就可以了。
  • 大小: 56.4 KB
分享到:
评论

相关推荐

    面向对象设计OOD 面向对象设计OOD

    OOD 的核心是面向对象设计原则(OOD principles),其中包括单一职责原则(SRP)、开闭原则(OCP)、Liskov 替换原则(LSP)、基于契约设计(DBC)等。 单一职责原则(SRP) 单一职责原则是指一个类应该只有一个...

    OOD设计基本原则 面向对象设计必备

    里氏替换原则(Liskov Substitution Principle)是 OOD 设计基本原则之一,它规定一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它察觉不出基类对象和子类对象的区别。LSP 是继承复用的基石,...

    软件设计的七大原则(OOD)

    三、LSP(Liskov Substitution Principle):里氏替换原则 LSP是软件设计的七大原则之一,它的定义是:如果S是T的子类型,那么T类型的对象可以用S类型的对象进行替换。LSP要求子类和基类之间必须满足IS-A关系,要想...

    OOD面试应对方法 SOLID原则.mp4

    应届生及亚马逊面试必考,IT求职必备基础。...L - Liskov substitution principle 里氏替换原则 I - Interface segregation principle 接口分离原则 D - Dependency Inversion Principle 依赖反转原则

    OOD原则 GRASP GOF

    3. **里氏替换原则(Liskov Substitution Principle, LSP)**: 子类对象应当可以替换掉其基类对象,并在任何基类能够正确工作的地方,子类也能够正确工作。这保证了程序的稳定性和兼容性。 4. **接口隔离原则...

    Uncle Bob OOD Principles

    3. **里氏替换原则(Liskov Substitution Principle, LSP)**:子类必须能够替换其基类。这意味着子类型应当可以无差别地使用在父类型出现的地方,而不会导致程序行为的改变。遵循LSP有助于保持代码的稳定性和一致性...

    61条面向对象设计的经验原则

    22. **Liskov替换原则的子原则**:子类型必须满足所有父类型的约束,包括预条件、后条件和不变量。 23. **构建和重构**:在开发过程中,不断优化设计,保持代码整洁。 24. **注释与文档**:清晰的注释和文档可以...

    面向对象的设计原则详解

    3. 里氏替换原则(Liskov Substitution Principle, LSP): 根据里氏替换原则,任何基类可以出现的地方,其子类也应该能够被无缝替换,而不会影响程序的正确性。这保证了代码的可扩展性和一致性。 4. 依赖倒置原则...

    面向对象设计的基本原则

    3. **里氏替换原则 (Liskov Substitution Principle, LSP)** - 子类型必须能够替换掉它们的基类型。这意味着子类可以完全替代父类在程序中的角色,而不会导致任何错误或需求的改变。这有助于保持代码的稳定性和可...

    swift-面向对象设计的设计原则和设计模式

    面向对象设计的原则主要有四个:单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)和依赖倒置原则(Dependency...

    面向对象七大基本设计原则.pdf

    3. 里氏替换原则(Liskov Substitution Principle, LSP):子类应该能够替换它们的基类。即派生类应该能够完全替代基类出现在程序中,同时保持程序的正确性。 4. 依赖倒置原则(Dependency Inversion Principle, ...

    ood-solid:面向对象设计的SOLID原理

    这五条原则分别是单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、接口隔离原则(Interface Segregation ...

    面向对象设计的基本原则和实践建议

    3. **里氏替换原则(Liskov Substitution Principle, LSP)**:子类型必须能够替换掉它们的基类型。这意味着在所有使用基类型的地方,都可以安全地使用子类型,而不会影响程序的正确性。遵守此原则能确保程序的稳定...

    讲述了面向对象设计的原则

    里氏替换原则(Liskov Substitution Principle, LSP) 里氏替换原则强调子类必须能够替换它们的基类。具体来说,在程序中凡是使用基类的地方,都可以用子类的对象替代,而不会影响程序的正确性和稳定性。这一原则...

    OOD原理Swift:Bob基于Bob叔叔的文章的OOD原理(SOLID)

    ### 里氏替换原则(Liskov Substitution Principle, LSP) LSP规定,子类对象应当能够在任何其父类适用的地方被替换,而不影响程序的正确性。在Swift中,遵循这一原则意味着子类不应破坏父类的契约,包括方法签名、...

    面向对象设计原则:突破软件工程学习的质的飞跃

    2. **里氏替换原则(Liskov Substitution Principle, LSP)**:该原则指出,子类型必须能够替换其基类型。这意味着如果一个程序使用的是父类的一个实例,那么用子类的实例代替它时,程序的行为不应该改变。这一原则...

    你必须知道的.net

    Liskov替换原则(Liskov Substitution Principle, LSP)由Barbara Liskov教授提出,其核心思想是:子类型必须能够替换它们的基类型。也就是说,在不改变程序正确性的前提下,任何父类型的出现都可以被其子类型替代。...

    UML for Java Programmers中文版

    本章系统地介绍了单一职责原则(SRP)、开放-封闭原则(OCP)、Liskov替换原则(LSP)、依存关系倒置原则(DIP)、接口隔离原则(ISP)等核心原则。遵循这些原则,可以帮助Java程序员构建更加灵活、扩展性和可复用性...

    UML for Java Programmers中文版.pdf

    - **Liskov替换原则**:子类必须能够替换其基类。 - **依存关系倒置原则**:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 - **接口隔离原则**:客户端不应该被强迫依赖于它不使用的方法。 #### 迭代开发...

Global site tag (gtag.js) - Google Analytics