实现MVC和观察者模式

时间:2014-12-14 12:04:39

标签: java swing model-view-controller observer-pattern

对于学校的小组项目,我们必须制作一个实现MVC模式的程序。

我遇到的困难是了解如何使用SWING在java中实现MVC模式,视图是否构成了SWING组件?

我很难理解的另一件事是更新什么。例如,有一篇文章称该观点执行了'控制器,然后控制器相应地更新模型,模型通知视图,然后视图从模型中提取数据。

虽然我对MVC模式的了解是控制器具有模型和视图的实例,因此它可以与两者进行交互。但是如果我在视图中按下一个按钮,控制器如何知道对模型做些什么?对于这个例子,clas(ses)是Observer(s),clas(ses)是Observable(s)?

我的另一个想法是,如果我们使用如上所述的MVC模式,视图是Observer,而模型是Observable,但仍然存在一个问题,即控制器如何知道何时更新模型?

如果看起来含糊不清,请在评论中要求澄清,我会回答。

1 个答案:

答案 0 :(得分:1)

View与控制器通信,控制器与模型通信,反之亦然。

假设您有一个包含图表点的模型类Graph。您的观点目的是显示该图表。 Graph类将是控制器观察到的Observable。如果控制器观察到变化,它将相应地告知视图更新/更改。如果按下视图上的按钮,比如显示不同的图形对象,则按钮会有actionListener,要求控制器更改图形。

是的,您的视图类将创建Swing组件。