0

最初我有按钮的视图保持命令,这些按钮计算这个并在被按下后将文本输出到 JTextAreas 上。产生什么取决于返回的值。

我担心我没有通过在控制器中设置如下文本来遵循标准的 MVC 架构。

目前我将按钮命令更改为我的控制器

private class ReadActionListener implements ActionListener {
    public void actionPerformed(ActionEvent l) {
    /* there is other code in here, which results in setting text its not  
       just a set text button*/
    /*interactions with model etc etc, outcome true? setText JTextArea like below*/
              view.variable.setText("hi there");
    }
}

我应该为控制器内的视图设置文本还是打破标准的 MVC 架构?

谢谢,

吉姆

4

2 回答 2

0

在 MVC 中,您不应该从控制器更新视图。控制器用于事件处理和根据这些事件更改模型。然后模型应该更新它的观察者,即。风景。

您可以在此处阅读观察者设计模式:http: //javarevisited.blogspot.nl/2011/12/observer-design-pattern-java-example.html

该网站上也提供了一个代码示例。

于 2013-05-22T13:05:20.687 回答
0

在 MVC 中,模型是一个

模型由多个对象组成:领域对象、服务和映射器。您可以在这篇文章中阅读更多内容(尽管在 PHP 中,这些概念仍然具​​有实质意义)。

话虽如此,您的控制器处理来自用户的输入,将其发送到模型层中的相关对象,然后将这些数据返回给控制器 - 然后您的控制器将其发送到视图实例,该实例处理显示此的逻辑给用户。

观察者模式真的很有趣,上面 Koen 的链接很好。我从 SO 的某个地方保存了这个片段:

更改主题状态后,对主题调用通知进行状态设置操作。这种方法的优点是客户不必记住就该主题调用 Notify。缺点是多次连续操作会导致多次连续更新,可能效率低下。

让客户负责在正确的时间致电通知。这里的好处是客户端可以等到一系列状态改变之后才触发更新,从而避免了不必要的中间更新。缺点是客户端有额外的责任来触发更新。这使得出错的可能性更大,因为客户端可能会忘记调用 Notify。

这个古老但仍然有效的观察者模式示例可能仍然有用:http: //javanook.tripod.com/patterns/observer.html

于 2013-05-22T13:33:40.303 回答