设计原则说,有利于组合而不是继承。但我想知道是否存在我们只能使用继承而不使用组合的情况。
本质上,我正在研究策略模式无法继承的情况。
在我看来,您可以通过组合来模拟继承的所有行为。
话虽如此,在某些情况下,继承有助于保证类型安全或存在合理的回退。
强制使用继承的一个例子是,当您必须与期望传递某种类型的外部库进行交互时,因此,如果您想扩展该类型的行为,您别无选择,只能扩展它。
如果您控制应用程序的整体设计,则倾向于使用接口来保证类型安全和方法签名,并使用组合来创建行为。
另外,如果您还没有,并且对 Java 编程有一点认真,我建议您阅读Effective Java 2nd Edition。
它可能是目前关于 Java 模式和良好实践的最佳书籍,而且无论您今天的技能水平如何,如果您还没有阅读它,您都会学到一些有用的东西。