里式替换原则(LSP)

简介: 里式替换原则(LSP)

简介:

里式替换原则(Liskov Substitution Principle,简称LSP)的提出者是美国计算机科学家Barbara Liskov。Barbara Liskov是一位计算机科学家,麻省理工学院教授,也是美国第一个计算机科学女博士,师从图灵奖得主John McCarthy教授,人工智能概念的提出者。她在1986年的一篇论文中首次提出了这个原则,并在随后的研究中对其进行了进一步的阐述和推广。

作用:

1.维护性

子类可以完全替换父类,使得代码的维护更加容易。因为如果子类无法替换父类,那么当父类发生变化时,子类也需要进行相应的修改,这样就会增加代码的维护难度。

2.可扩展性

子类可以继承父类的属性和方法,并且可以添加自己的属性和方法,从而扩展了父类的功能。这样,当需要增加新的功能时,只需要在子类中添加相应的属性和方法即可,而不需要修改父类,这样就提高了代码的可扩展性

3.正确性

子类可以完全替换父类,从而保证了代码的正确性。如果子类无法完全替换父类,那么在使用子类对象时就会出现一些错误,因为父类的行为可能会发生变化,从而导致代码的行为不一致。

4.复用性

子类可以完全替换父类,从而提高了代码的复用性。如果子类可以替换父类,那么就可以在不同的上下文中使用同一组代码,从而提高了代码的复用性。

过程:

总结:

在上面这个例子定义了一个 Animal 类和一个 Dog 类,Dog 类继承自 Animal 类。Animal 类中有一个 Eat 方法,而 Dog 类中也有一个 Eat 方法,这个方法使用了 new 关键字来隐藏了 Animal 类中的 Eat 方法。

在 Main 方法中,先创建了一个 Animal 对象,然后再创建了一个 Dog 对象。接着调用了 animal 对象的 Eat 方法,输出了 "I am eating.",这个方法调用的是 Animal 类中的 Eat 方法。然后,我们调用了 dog 对象的 Eat 方法,输出了 "I am a dog and I am eating.",这个方法调用的是 Dog 类中的 Eat 方法。

最后,将 dog 对象赋值给了 animal 对象,并再次调用了 animal 对象的 Eat 方法,输出了 "I am a dog and I am eating.",这个方法调用的是 Dog 类中的 Eat 方法,因为此时 animal 对象的类型是 Dog 类型。

这个例子演示了里氏替换原则的应用,即在程序运行时,如果需要用一个子类对象来替换父类对象,程序应该能够正确地处理这种替换,而不需要进行额外的处理。


目录
相关文章
|
Java
六大设计原则-里式替换原则【Liskov Substitution Principle】
六大设计原则-里式替换原则【Liskov Substitution Principle】
34 0
|
1月前
|
分布式计算 Java 关系型数据库
SOLID设计原则:里式替换原则
本文详细介绍了SOLID设计原则中的Liskov替换原则(LSP),并通过实例解释了其核心概念:子类型应能在不破坏应用的情况下替换父类型。文章首先从科学定义出发,逐步引出LSP的实际意义,并通过经典的正方形与长方形代码示例展示了违反LSP的问题及其解决方案。接着,通过股票交易场景进一步说明了如何正确应用LSP。最后总结了LSP的重要性及其在软件开发中的应用技巧。
41 8
|
测试技术
软件设计原则-单一置原则讲解以及代码示例
单一职责原则(Single Responsibility Principle,SRP)是面向对象设计中的一个重要原则,提倡将一个类或模块只负责一个职责或功能。它最早由Robert C. Martin在其《敏捷软件开发:原则、模式与实践》一书中提出。 单一职责原则的核心思想是:一个类或模块应该只有一个引起它变化的原因。也就是说,每个类或模块都应该只有一个职责或功能,并且该职责或功能应该在该类或模块内部封装起来,而不是分散到多个类或模块中。
86 0
|
设计模式 安全 Java
设计规则之里氏替换原则
设计规则之里氏替换原则
71 0
设计规则之里氏替换原则
|
安全 Java 大数据
设计规则之单一职责原则
设计规则之单一职责原则
78 0
设计规则之单一职责原则
|
设计模式 安全 Java
设计规则之开闭原则
设计规则之开闭原则
86 0
设计规则之开闭原则
|
设计模式 搜索推荐 安全
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
【Java设计模式 经典设计原则】三 SOLID-LSP里式替换原则
137 0
|
设计模式 Java 应用服务中间件
依赖反转原则|设计原则
依赖反转也称为依赖倒置,它的定义是十分抽象的。
|
设计模式
设计原则(六):DIP 依赖反转原则
设计原则(六):DIP 依赖反转原则
151 0
|
消息中间件 SQL 缓存
程序命名的原则与重构
命名是对事物本质的一种认知探索,是给读者一份宝贵的承诺。糟糕的命名会像迷雾,引领读者走进深渊;而好的命名会像灯塔,照亮读者前进的路。命名如此美妙,本文将一步步揭开它的神秘面纱!
程序命名的原则与重构