1

设计原则说,有利于组合而不是继承。但我想知道是否存在我们只能使用继承而不使用组合的情况。

本质上,我正在研究策略模式无法继承的情况。

4

1 回答 1

4

在我看来,您可以通过组合来模拟继承的所有行为。

话虽如此,在某些情况下,继承有助于保证类型安全或存在合理的回退。

强制使用继承的一个例子是,当您必须与期望传递某种类型的外部库进行交互时,因此,如果您想扩展该类型的行为,您别无选择,只能扩展它。

如果您控制应用程序的整体设计,则倾向于使用接口来保证类型安全和方法签名,并使用组合来创建行为。

另外,如果您还没有,并且对 Java 编程有一点认真,我建议您阅读Effective Java 2nd Edition

它可能是目前关于 Java 模式和良好实践的最佳书籍,而且无论您今天的技能水平如何,如果您还没有阅读它,您都会学到一些有用的东西。

于 2013-05-10T13:40:49.003 回答