使用MVC样式,哪里是调用查询函数的最佳位置?

时间:2016-03-28 17:17:54

标签: java oop design-patterns model-view-controller

我想知道这里的最佳做法。

MVC(模型 - 视图 - 控制器)模式涉及分离程序的组件,这些组件模拟数据,操纵这些模型,并以某种方式将这些结果显示给用户(通常通过UI)。

获取模型数据并将其插入数据库的函数怎么样?例如,我有一个名为GameBoard的对象,我还希望能够将该板的状态插入SQL数据库以用于存储/历史目的。我有一个包含所有查询功能的类。我不是在问自己在哪里存储查询调用 - 再次将这些调用封装在一个类中。

但是我会从中将这些函数称为?将这种功能作为GameBoard的方法最有意义吗?或者它应该是控制器类的一部分吗?

3 个答案:

答案 0 :(得分:1)

在理想世界中,执行GameBoard状态持久性的类应该听游戏事件:

  1. 点击了UI按钮
  2. Controller调用一些Model方法(递增计数器一个)
  3. 模型更新其内部状态
  4. 模型通知所有对状态更改事件感兴趣的侦听器
  5. Controller接收事件并更新UI
  6. DB Component接收事件并将GameBoard状态保存到数据库
  7. 当用户单击UI按钮以使用数据库数据更新视图时:

    1. 点击了UI按钮
    2. Controller加载数据并调用模型更新方法
    3. 接下来的3-4-5步骤是相同的​​

答案 1 :(得分:1)

  

但我会从哪里调用这些函数?

在控制器中。通常,控制器具有依赖于模型对象的输入和输出。 E.g。

enter image description here

根据您的架构,您可能会在控制器下面引入应用程序服务。

https://www.link-intersystems.com/blog/2013/07/20/the-mvc-pattern-implemented-with-java-swing/

的详细信息

答案 2 :(得分:0)

以下是MVC的要点。

  1. 在演示文稿(视图和控制器)之间进行强有力的分离 和域名(模型)。
  2. 将GUI小部件划分为控制器(用于响应用户激励) 和视图(用于显示模型的状态)。
  3. 控制器和视图应该(大部分)不直接通信但是 通过模型 - Observer Synchronization
  4.   

    我从哪里调用这些函数?

    您应该从domain model(型号)调用这些函数。

    进一步阅读martin fowler