本文已使用 Google Cloud Translation API 自动翻译。
某些文档最好以原文阅读。
Liskov 替换原则是面向对象编程的基本原则,它指出派生类应该可以替换它们的基类。换句话说,任何使用对基类的引用的方法都应该与对任何派生类的引用同样有效,而无需程序员进行任何更改。
该原则以 Barbara Liskov 的名字命名,她在 1987 年的一篇题为“数据抽象和层次结构”的论文中首次将其形式化。
简而言之,里氏替换原则指出派生类应该可以替换它们的基类。换句话说,任何使用对基类的引用的方法都应该与对任何派生类的引用同样有效,而无需程序员进行任何更改。
该原则以 Barbara Liskov 的名字命名,她在 1987 年的一篇题为“数据抽象和层次结构”的论文中首次将其形式化。
Liskov 的论文灵感来自 David Parnas 在 1972 年写的一篇题为“On the Criteria To Be Used in Decomposing Systems into Modules”的论文。在那篇论文中,Parnas 提出了“替换原则”,其中指出“任何使用模块 M2 的模块 M1 都可以替换为另一个使用 M2 的模块 M3,前提是 M3 提供与 M1 到 M2 相同的抽象接口”。
Liskov 的论文将这一原则概括为继承,表明它不仅适用于模块,而且适用于任何层次结构。她将原则形式化如下:
“设 q(x) 是关于类型 T 的对象 x 的可证明属性。那么 q(y) 应该关于类型 S 的对象 y 是可证明的,其中 S 是 T 的子类型。”
换句话说,如果一个属性对基类为真,则对所有派生类也应该为真。
Liskov 替换原则在实践中经常被违反,尤其是在遗留代码中。一个常见的违规行为是“脆弱的基类”问题,其中对基类的更改会破坏所有派生类。
另一个常见的违规行为是“脆弱的层次结构”问题,其中对派生类的更改会破坏基类。
为避免这些问题,以遵循 Liskov 替换原则的方式设计您的类很重要。
一种方法是使用抽象类或接口而不是具体类。这允许您更改类的实现而不破坏使用它的任何代码。
遵守里氏替换原则的另一种方法是使用组合而不是继承。这允许您更改类的实现而不破坏使用它的任何代码。
Spring Boot 是一种流行的 Java 框架,可以轻松创建独立的、生产级的基于 Spring 的应用程序。
Liskov 替换原则是面向对象编程的一个重要原则,Spring Boot 也遵循了这一原则。
例如,Spring Boot 使用抽象类和接口而不是具体类。这允许您更改类的实现而不破坏使用它的任何代码。
此外,Spring Boot 使用组合而不是继承。这允许您更改类的实现而不破坏使用它的任何代码。
Liskov 替换原则是面向对象编程的基本原则,它指出派生类应该可以替换它们的基类。换句话说,任何使用对基类的引用的方法都应该与对任何派生类的引用同样有效,而无需程序员进行任何更改。
该原则以 Barbara Liskov 的名字命名,她在 1987 年的一篇题为“数据抽象和层次结构”的论文中首次将其形式化。
Liskov 替换原则在实践中经常被违反,尤其是在遗留代码中。一个常见的违规行为是“脆弱的基类”问题,其中对基类的更改会破坏所有派生类。
另一个常见的违规行为是“脆弱的层次结构”问题,其中对派生类的更改会破坏基类。
为避免这些问题,以遵循 Liskov 替换原则的方式设计您的类很重要。
一种方法是使用抽象类或接口而不是具体类。这允许您更改类的实现而不破坏使用它的任何代码。
遵守里氏替换原则的另一种方法是使用组合而不是继承。这允许您更改类的实现而不破坏使用它的任何代码。
Spring Boot 是一种流行的 Java 框架,可以轻松创建独立的、生产级的基于 Spring 的应用程序。
Liskov 替换原则是面向对象编程的一个重要原则,Spring Boot 也遵循了这一原则。
例如,Spring Boot 使用抽象类和接口而不是具体类。这允许您更改类的实现而不破坏使用它的任何代码。
此外,Spring Boot 使用组合而不是继承。这允许您更改类的实现而不破坏使用它的任何代码。