Head First Design Pattern:何时不使用接口(特别是 Java 'interface')

Head First Design Pattern: When to not use Interface (specifically in Java 'interface')

开始读这本书,在策略模式中,他们不鼓励使用接口,其作用只是强制执行子类上单个方法的实现

然而,在下一章:观察者模式,他们就这样做了。其中,他们使用了一个Display接口,显示方法由具体观察者实现

我的问题是:到底这样使用接口真的没问题吗?如果没有,有没有更好的方法来做到这一点?

在策略模式示例中,我们有许多 Duck 子类,但只有几种不同的飞行和嘎嘎声方式,因此我们使用组合而不是继承来赋予 Duck 子类飞行和嘎嘎声行为。

他们提到的“维护噩梦”是,如果必须在许多 Duck 子类中重复对飞行或嘎嘎声的更改,而不是仅在一个具体的策略实施中。

在 Observer 的情况下,每个 Observer 实现都有自己想要被通知的原因,因此没有重复的代码要提取。

当然策略模式确实使用接口,嘎嘎和飞行各一个。