在Java中使用Observer理解MVC

在Java中使用Observer理解MVC,java,model-view-controller,observer-pattern,Java,Model View Controller,Observer Pattern,我从一开始就学习Java MVC 如果视图是且模型是,为什么Observer.update方法在第一个参数中接受可观测?如果视图与模型一起工作(依赖于它的一些方法),那么它就不会是可重用的。第二个参数不应该是视图应该处理的唯一对象吗 为什么Observer.update方法在第一个参数中接受Observable observable是发起更新调用的对象,它在这个调用中传递一个对自身的引用,以便观察者毫无疑问知道谁在进行这个调用。想象一下,如果观察者同时观察多个观察对象,会发生什么。这种类型的参数

我从一开始就学习Java MVC

如果视图是且模型是,为什么
Observer.update
方法在第一个参数中接受可观测?如果视图与模型一起工作(依赖于它的一些方法),那么它就不会是可重用的。第二个参数不应该是视图应该处理的唯一对象吗

为什么Observer.update方法在第一个参数中接受Observable

observable是发起更新调用的对象,它在这个调用中传递一个对自身的引用,以便观察者毫无疑问知道谁在进行这个调用。想象一下,如果观察者同时观察多个观察对象,会发生什么。这种类型的参数传递将有助于消除关于此调用来源的混淆。它与在Swing ChangeEvent对象或ActionEvent对象中传递对调用对象的引用几乎没有什么不同

为什么Observer.update方法在第一个参数中接受Observable


observable是发起更新调用的对象,它在这个调用中传递一个对自身的引用,以便观察者毫无疑问知道谁在进行这个调用。想象一下,如果观察者同时观察多个观察对象,会发生什么。这种类型的参数传递将有助于消除关于此调用来源的混淆。它与在Swing ChangeEvent对象或ActionEvent对象中传递调用对象的引用几乎没有什么不同。

但是视图和模型应该只是松散耦合的,不是吗?如果我做对了,视图应该只更新它的内容,嗅探谁在呼叫不是它的事,它确保了控制器。如果我错了,请纠正我。我知道,在某些情况下,观察者需要知道它在观察谁,但不是在上面描述的MVC中,对吗?@Jan:视图不必知道谁在呼叫,但有时它确实知道。视图几乎总是比模型更紧密地耦合,模型几乎总是非常松散地耦合。值得一提的是,我没有在MVC中使用Java的Observer/Observable,而是通常使用PropertyChangeSupport“滚动我自己的”。但是视图和模型应该只是松散地耦合,不是吗?如果我做对了,视图应该只更新它的内容,嗅探谁在呼叫不是它的事,它确保了控制器。如果我错了,请纠正我。我知道,在某些情况下,观察者需要知道它在观察谁,但不是在上面描述的MVC中,对吗?@Jan:视图不必知道谁在呼叫,但有时它确实知道。视图几乎总是比模型更紧密地耦合,模型几乎总是非常松散地耦合。值得一提的是,我没有在MVC中使用Java的Observer/Observable,而是通常使用PropertyChangeSupport“滚动我自己的”。