【问题标题】:Basic MVC - Simple Java Program基本 MVC - 简单的 Java 程序
【发布时间】:2012-01-25 01:16:36
【问题描述】:

我开始学习编程,并创建了一个简单的 BlackJack 主机游戏。现在我正在尝试使用 swing/JFrame 创建一个 GUI,并决定尝试同时学习 MVC 的基础知识。我遇到了这个关于 MVC 的java / gwt UI coding - clean code

我的问题是,在玩家击中“击中”后,应该如何准确地通知 View 玩家手牌的变化。

如果用户想点击,hitBtn(in VIEW) -> actionListener()(in CONTROLLER) -> hit()(in MODEL)

 - hit() would than modify the nessessary model classes 
   (i.e. DealtCards, Deck, Cards objects)

视图应该如何知道模型已经改变,更基本的视图应该如何显示模型类中的数据,例如玩家的手?在模型类中使用 getter 方法还是从模型到控制器到视图的传递? (我的印象是视图不应该对模型有任何引用)

谢谢!

【问题讨论】:

    标签: java model-view-controller user-interface


    【解决方案1】:

    用于通知视图模型更改:
    1.PropertyChangeListener
    2. 控制器可以充当视图和传播更改的模型之间的桥梁。
    我不认为不从视图引用模型总是不可接受的。如果您对模型类型有清晰的接口并且隐藏了实际实现,则视图可能会引用它。
    还可以看看data binding,虽然它是 SWT,但它的方法是独立于实现的。

    【讨论】:

      【解决方案2】:

      视图引用控制器没有问题,控制器持有视图引用也没有问题。事情必须这样才能工作。重要的是如何将引用传递给每个引用以使它们松散耦合。我通常使用对接口和构造函数或 setter 注入的引用来执行绑定。有关控制反转的更多信息,请访问此链接:
      http://martinfowler.com/articles/injection.html

      MVC 的基本思想是:

      • 模型、视图和控制器的代码接口。
      • 模型、视图和控制器的代码实现。
      • 尽可能将它们解耦。

      关于控制器的提示:我通常将 ActionListeners 和其他特定的 GUI 类放在视图实现中,然后我从那里将自己的事件分派给控制器。这样,如果我想将应用程序移植到具有不同 GUI 的其他平台上,我可以重用视图界面、控制器界面以及可能的控制器实现。唯一不经常重用的是视图实现和模型实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-26
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-12
        • 2015-01-17
        • 1970-01-01
        相关资源
        最近更新 更多