【问题标题】:Is it good design pattern to pass model objects to view objects in java swing MVC?将模型对象传递给java swing MVC中的对象是一种好的设计模式吗?
【发布时间】:2017-10-04 16:59:28
【问题描述】:

我有课Model:

class Model {
Object[][] objects=new Object[3][];
}

我有一个控制器,它是动作监听器:

class MyListener implements ActionListener {
   public void actionPerformed(ActionEvent a){
          //here I have to get objects array from Model and pass it to view to display
}
}

但我担心如果我将对象数组传递给JPanel 会在以后引起问题。

JPanel 是否有其他方法可以使用objects

【问题讨论】:

    标签: java swing model-view-controller


    【解决方案1】:

    很久没接触Swing了,不过还是:JPanel其实并不需要任何类型的模型对象,它只是一个可以聚合其他小部件的小部件。通常,将模型传递给可以实际显示某些内容的小部件是有意义的,例如 textArea、textField、表格等。

    在 Swing 的 MVC 模型实现中,组件通过侦听器对某些事件做出反应,既充当视图(显然)又充当控制器。

    在任何情况下,以下规则都适用:

    • 控制器改变模型
    • 视图“订阅”模型更改。通常,它在 swing 本身的组件内部模型中实现,但您可以扩展它们并定义您的行为。一旦模型被控制器更改,它就会向视图触发特殊事件,例如“嘿,我变了”。
    • 模型通常与视图松散耦合。
    • 视图对这些事件做出反应并应用更改(通常使用新数据重新绘制)。

    从您的问题中很难判断当有人更改模型时会发生什么(信息不足)。

    【讨论】:

    • 谢谢!我不明白如何告诉视图模型已更改?模型由后台线程更改,而不是由用户更改。
    • 查看观察者模式。模型在这里是可观察的。模型应该公开注册观察的方法。在这种情况下,视图是观察者。视图会收到模型已更改的通知。只要视图收到有关这些更改的通知,谁触发更改并不重要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多