设计原则表明,组合优先于继承。但是我想知道是否存在我们可以只使用继承而不使用组合的情况。
本质上,我正在研究策略模式因继承而失败的情况。
最佳答案
在我看来,您可以通过组合来模拟继承的所有行为。
也就是说,在某些情况下,继承有助于保证类型安全或存在合理的回退。
您被迫使用继承的一个示例是当您必须与期望传递特定类型的外部库交互时,因此,如果您想扩展该类型的行为,您别无选择,只能扩展它。
如果您控制应用程序的整体设计,则倾向于使用接口(interface)来保证类型安全和方法签名,并使用组合来创建行为。
此外,如果您还没有阅读过,并且对 Java 编程有一点认真,我建议您阅读 Effective Java 2nd Edition .
这可能是目前关于 Java 模式和良好实践的最佳书籍,无论您今天的技能水平如何,如果您还没有读过它,您都会学到一些有用的东西。
关于java - 策略模式在什么情况下会失效转移继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483557/