【问题标题】:MVC pattern in complex GUI programs [closed]复杂 GUI 程序中的 MVC 模式
【发布时间】:2014-01-13 19:52:06
【问题描述】:

我想知道,我应该如何使用 MVC 模式构建一个更大的程序? 在网络上,我通常看到一个模型、控制器和视图。

例如,如果我想制作一个会说话的教练。 在词汇训练器中,我可以添加新词汇并进行查询。 当然,我想制作一个可以在这两种模式之间切换的菜单。 现在我不知道我应该如何用 MVC 模式设计这个程序。 有人知道一个很好的教程或可以向我解释。 也许有人知道一个干净的小示例程序或其他东西...... 主菜单也应该有模型吗?

还有一个关于 MVC 模式本身的问题。 模型仅包含数据,视图仅定义 gui 的外观,控制器在模型中显示数据并使用该知识设置视图的状态,例如添加组合框项。 对吗?

如果有人想知道,我使用 Java。

我想你明白我真的很困惑。

【问题讨论】:

    标签: java model-view-controller


    【解决方案1】:

    通常您创建一个“核心”项目并将其与您的 Web 项目分开。

    “核心项目”将有: 业务对象,例如实体和数据访问

    “网络项目”将有:

    • 控制器:将请求从 UI 路由到核心逻辑
    • 视图:专注于在 HTML 中呈现数据
    • 模型:将简单的核心业务对象转换为更简单的结构 旨在支持特定视图

    使用 google 找到关于 MVC 的好教程,有很多资源,但我为你找到了一个: http://leepoint.net/notes-java/GUI/structure/40mvc.html

    还有一个提示可以帮助您进行 google 搜索,确保有许多框架,如果您正在遵循教程(带有框架),那么您需要下载所有 API/jar 文件才能让您的 MVC 启动并运行。 (你可能已经知道这一点,但我想我应该分享一下,以防你不熟悉 java 和它的框架)。

    【讨论】:

      【解决方案2】:

      我在创建小型和大型完整的 Java 程序时应用此方法。如果您考虑如何做事,这种方法可以轻松扩展,并且可能是一个好的开始:

      默认

      • Main.java - 只是启动事物的主要方法

      [GUI]包(查看)
      - GUI.java - gui 的负责人,一些 gui 零件在这里建造,有些是单独建造的
      - PanelFoo.java - gui的一部分
      - PanelBar.java - gui的另一部分

      [控制]包(控制)
      - Monitor.java - 用于并发同步任务,主要是由 GUI 包 ActionListeners 调用的方法
      - SomeTask.java 实现 Runnable - 也许是一个下载线程
      - SomeLogicHelper.java - 一些更大的方法和一些逻辑

      [Model]包(模型),基本建模
      - Vehicleish.java
      - Carish.java
      - Bicycleish.java
      - Garageish .java

      [GUI]通过其ActionListeners调用Monitor中的方法连接到[Control]。 [GUI] 为 Monitor 提供回调接口,以调用未直接在 [GUI] 内完成的更改。

      [Control] 连接到[Model],它使用事物的模型使事情变得简单,它可以协调逻辑并从[Model]到对象“做事”

      【讨论】:

        【解决方案3】:

        在 GUI 客户端应用程序中使用 MVC 与服务器上的 Java Web 应用程序非常不同。在 Java Web Apps 中,请求首先到达控制器,然后是模型,然后是视图,以将其呈现给用户。

        在 GUI 客户端应用程序中,实际上 View 拥有控制器。当事件发生时,这是请求的副本,因此它会命中控制器,然后是模型和数据访问对象。

        虽然这是实现 MVC 的一种方式。也可能有其他解释和实现。 GUI 客户端应用程序的 MVC 没有像为服务器 Web 应用程序定义的那样明确定义。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 2012-11-01
          • 1970-01-01
          • 2019-11-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多