为什么很多人不喜欢JDK Observer模式并建议实现自己的模式?为什么重新发明轮子?
我看到的重新实现的观察者是JDK的观察者。
答案 0 :(得分:4)
一个可能的原因是Observable
是一个必须子类化的具体类。 Java只有单继承,所以如果你已经有一个超类,你也不能继承Observable
。
第二个原因是您经常要向对象添加多种类型的观察者(侦听器),而Observer
不直接支持这种情况(您可以在notifyObservers
方法中触发不同的对象,但这并不像拥有多个侦听器接口那样清晰,并且由于观察者会收到不适合他们的对象,因此很有可能出现错误和低效率。)
答案 1 :(得分:1)
java.util.Observable是一个类。不是接口因此它提供了一些功能,而不必自己编写代码,但这意味着你自己的类扩展它,不能扩展任何其他类。这是一个限制。
其他模式将Observable作为一个接口,没有这个问题(但是你需要自己实现更多代码的代价)