复杂GUI程序中的MVC模式

时间:2014-01-13 19:52:06

标签: java model-view-controller

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

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

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

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

我认为你看到我真的很困惑。

3 个答案:

答案 0 :(得分:3)

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

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

“Web项目”将具有:

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

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

还有一个提示可以帮助您进行谷歌搜索,有很多框架可以确保,如果您正在关注教程(使用框架),那么您需要下载所有API / jar文件才能够让你的MVC启动并运行。 (您可能已经知道这一点,但我认为我应该分享以防万一你是java和它的新框架)。

答案 1 :(得分: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]中完成的更改。

[控制]连接到[模型],它使用事物模型使事情变得简单,它可以协调逻辑和“做事”到[模型]中的对象

答案 2 :(得分:1)

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

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

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