【问题标题】:How View and Controller Communicate in MVC?MVC 中视图和控制器如何通信?
【发布时间】:2016-10-24 10:20:00
【问题描述】:

我有一个关于模型视图控制器的问题。

我对视图和控制器如何相互通信感到困惑。

我有一个接受模型实例的视图类:

View v = new View(model);

我在 View 类中还有一个 actionListener 字段,在该构造函数中我传入了一个模型和当前类(视图)的实例:

private ActionListener listener;
.
.
.
listener = new Controller(model,this);

现在在我的控制器类中,我扩展了 ActionListener 并传入了模型和视图类:

public class Controller implements ActionListener{
    public Controller(model m, View v){ 
.
.
.

现在我的问题是,你能在模型视图控制器的控制器类的构造函数中传递视图类吗?我在视图中传递的原因是我有时想要关闭视图窗口或想要传递来自文本字段的值。有时我也想从视图类中调用一个方法。这是做 MVC 的正确方法吗?

谢谢

【问题讨论】:

    标签: java model-view-controller


    【解决方案1】:

    你可以问 5 个不同的人如何实现 MVC,你会得到 5 个不同的答案。有很多不同的方法可以做到这一点。我会阅读有关 MVC 和其他设计模式(例如 MVP)的更多信息。 Martin Fowler 在GUI patterns 上有一些很棒的文章。还有this article 有很好的信息。

    回答你的问题。控制器知道视图没有任何问题。控制器是应该处理用户输入的控制器(否则你可以考虑 MVP)。我会创建一个界面,并且只有控制器知道视图的界面。所以创建类似 IView 的东西,让你的视图实现那个接口。这样你就没有紧密耦合的视图和控制器,你可以做一些事情,比如创建一个模拟视图进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      相关资源
      最近更新 更多