Java重新实现Observer

时间:2012-02-22 10:12:17

标签: java design-patterns observer-pattern

为什么很多人不喜欢JDK Observer模式并建议实现自己的模式?为什么重新发明轮子?

我看到的重新实现的观察者是JDK的观察者。

2 个答案:

答案 0 :(得分:4)

一个可能的原因是Observable是一个必须子类化的具体类。 Java只有单继承,所以如果你已经有一个超类,你也不能继承Observable

第二个原因是您经常要向对象添加多种类型的观察者(侦听器),而Observer不直接支持这种情况(您可以在notifyObservers方法中触发不同的对象,但这并不像拥有多个侦听器接口那样清晰,并且由于观察者会收到不适合他们的对象,因此很有可能出现错误和低效率。)

答案 1 :(得分:1)

java.util.Observable是一个类。不是接口因此它提供了一些功能,而不必自己编写代码,但这意味着你自己的类扩展它,不能扩展任何其他类。这是一个限制。

其他模式将Observable作为一个接口,没有这个问题(但是你需要自己实现更多代码的代价)