java - 策略模式在什么情况下会失效转移继承

标签 java design-patterns

设计原则表明,组合优先于继承。但是我想知道是否存在我们可以只使用继承而不使用组合的情况。

本质上,我正在研究策略模式因继承而失败的情况。

最佳答案

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

也就是说,在某些情况下,继承有助于保证类型安全或存在合理的回退。

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

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

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

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

关于java - 策略模式在什么情况下会失效转移继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483557/

相关文章:

c# - 构造函数注入(inject) (DI) 与静态工厂的横切问题?

c++ - 由其他更大的类组成的类问题

c++ - EEPROM 烧录器的设计模式

java - 从 Maven Artifactory 中提取所有 Artifact ,而不仅仅是 JAR Artifact

java - 在递归方法内的循环中添加计数器 - Java

java - 取消部署时,将 EJB 注入(inject) SessionScoped ManagedBean 会生成异常

java - 在整数列表的何处搜索结果?

java - 如何在 Java 中通过多个线程发送消息?

Objective-C - !!BOOL 有益

c++ - 实现观察者模式 C++