设计原则说赞成合成而不是继承。但我想知道是否存在我们只能使用继承而不是组合的情况。
基本上我正在研究战略模式对遗产进行故障转移的情况。
答案 0 :(得分:4)
在我看来,你可以通过合成来模仿继承的所有行为。
话虽如此,在某些情况下,继承可以有助于保证类型安全或存在合理的后备。
强制使用继承的一个示例是当您必须与期望传递某种类型的外部库进行交互时,因此,如果要扩展该类型的行为,则别无选择,只能对其进行扩展。
如果您控制应用程序的整体设计,那么请使用接口来保证类型安全和方法签名,以及创建行为的组合。
另外,如果您还没有,并且对Java编程一点认真,我建议您阅读Effective Java 2nd Edition。
这可能是关于Java模式和良好实践的最好的书,无论你今天的技术水平如何,如果你还没有阅读它,你将学到一些有用的东西。