MVC架构 - 在哪里放置逻辑?

时间:2012-10-19 11:40:22

标签: java swing model-view-controller

我正在创建一个用于显示自动迷宫解算器的模拟,其中几乎没有用户输入。

使用MVC架构并以Java实现。视图是通过Controller从模型接收和绘制数据。

目前,我有两个选项可用于更新模型逻辑,然后更新视图:

  • Controller实现Runnable
  • Controller创建一个线程:

    Thread runControl = new Thread(this);
    runControl.start();
    
  • 然后线程可以在Controller中执行run(),它会更新Model逻辑并将新数据传递给View

然而,这不是我首选的方法,因为我很快就会让模型运行自己的逻辑。我更喜欢:

  • 模型实现Runnable
  • 模型包含run()
  • 中的所有逻辑
  • Controller为模型创建一个Thread并执行模型

我现在迷路了。然后模型可以相应地更新自己的逻辑,但是当模型线程运行时,如何通知控制器模型数据的变化,然后检索该数据(仍然被操作/更新)然后通知查看?

1 个答案:

答案 0 :(得分:1)

控制器和视图紧密相连。前者是服务器端,后者是客户端。

我认为MVC需要一个如下所示的更新:

View->Controller->Service->Persistence

这些是图层。模型在图层之间运行。

服务满足用例。它们是放置业务逻辑的适当位置。当然Model对象应该知道如何管理自己的状态,但是编组Model和Persistence对象来完成用例属于Service。你需要Model之外的东西,因为Models可能不知道它们被使用的所有上下文。

Controller接受,验证和绑定请求;它确定了满足请求所需的服务;它序列化响应并确定下一个视图。

服务部门知道用例和工作单元。