这是在java中使用MVC的正确方法吗?

这是在java中使用MVC的正确方法吗?,java,model-view-controller,Java,Model View Controller,我有一个引用视图的模型,一个引用模型和视图的控制器,还有一个解耦视图,没有引用上述内容 控制器拥有视图的所有侦听器,并通过调用模型和视图上的方法来处理事件。模型在其某些方法中调用视图上的方法 这是否不利于维护和重用,是否应该只在控制器中调用所有视图方法?此外,我还没有将模型设置为可观察对象,将控制器和视图设置为观察者,如一些示例所示。这是常见的做法吗?遵循经典的MVC模式,模型将无法直接访问视图。但是,间接访问(例如通过观察者)将有助于提醒视图底层数据的更改。我将避免直接从模型耦合到视图,或者至

我有一个引用视图的模型,一个引用模型和视图的控制器,还有一个解耦视图,没有引用上述内容

控制器拥有视图的所有侦听器,并通过调用模型和视图上的方法来处理事件。模型在其某些方法中调用视图上的方法


这是否不利于维护和重用,是否应该只在控制器中调用所有视图方法?此外,我还没有将模型设置为可观察对象,将控制器和视图设置为观察者,如一些示例所示。这是常见的做法吗?

遵循经典的MVC模式,模型将无法直接访问视图。但是,间接访问(例如通过观察者)将有助于提醒视图底层数据的更改。

我将避免直接从模型耦合到视图,或者至少在非常特殊的情况下耦合(即使如此,这也可能暗示被操纵的状态不是真实的模型状态,而是表示状态。)

通常,模型使用侦听器通知更改,而不是直接耦合到视图。视图可以直接引用模型,以便获取要显示的数据。虽然这可能不是严格必需的—所有更改都可以在视图需要时作为侦听器通知从模型传播到视图,但这通常不是一个好主意,因为它将视图的呈现与来自模型的通知相耦合


总之,控制器对模型进行更改,从而通知相关方(包括视图)。视图引用了用于检索数据的模型。

模型不应该知道关于视图的任何信息。 视图应该知道如何在给定模型的情况下填充自身


如果您的模型要更改,它可能希望让视图知道任何更改,以便显示可以更改

MVC的风格太多了,我不会把任何一种称为“错误”


寻找一种适合自己的口味,随它去。

Sun.com上有一篇不错的博客文章:。首先解释“经典”MVC模式,其中视图和模型直接相互交互,然后继续解释较新的“集中式控制器”MVC模式,其中视图和模型只能通过控制器相互通信(模型与视图解耦)。它还包含一个针对Swing的示例。

桌面上的Swing是一个很好的GUI库。看看这个,看看它与MVC有什么关系。对于企业,请查看Martin Fowler针对基于web的应用程序的模型-视图-控制器模式(330)。如果你没有他的书(企业应用程序架构模式),我强烈建议你拿一本。

如果视图中没有对模型的引用,视图如何知道显示什么?@mdma视图应该知道模型,而不是模型versa@Romain-这就是我要问的。OP声明模型知道视图,而不是相反。视图通过控制器、事件和一些模型获取其方法的参数,但我想我最好解决这个问题。