java - 里氏代换原则——如何建模正方形和长方形

标签 java oop design-patterns

<分区>

Possible Duplicate:
Is deriving square from rectangle a violation of Liskov's Substitution Principle?

通过应用 LSP,谁能给我一个 Square 和 Rectangle 的实现?

我看过《Head First Object-Oriented Analysis and Design》这本书,他们说如果 Sqaure 继承自 Rectangle,它违反了 LSP 但没有正确的实现。

有人想试试吗?

最佳答案

如果你让 Square 和 Rectangle 不可变,那么你就不会违反 LSP。

问题是如果你可以独立地改变一个矩形的宽度和高度,而一个正方形是一个矩形,那么你可以改变一个正方形而不是一个正方形。

关于java - 里氏代换原则——如何建模正方形和长方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348557/

相关文章:

java - 场景的最佳设计模式

java - 以编程方式模拟平滑的拖动事件

Java - 信号量的广泛使用

java - 如何修复 "Error 1335. The cabinet file ' sj180121.cab'“安装 JDK 8 时出错

Java单例模式

rest - Spring框架中的DAO、DTO和Service层是什么?

java - JSON 包含 unicode 字符

c# - 在虚方法的所有覆盖之后执行代码

oop - 在 Fortran 中定义和调用构造函数

java - 访问者模式接受不识别对象的类