【问题标题】:MVC Architecture - Where to place logic?MVC 架构 - 在哪里放置逻辑?
【发布时间】:2012-10-19 11:40:22
【问题描述】:

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

使用 MVC 架构并在 Java 中实现。 View 是通过 Controller 从 Model 接收和提取数据的。

就目前而言,我有两个选项可用于更新模型逻辑并依次更新视图:

  • 控制器实现 Runnable
  • 控制器创建线程:

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

但是,这不是我的首选方法,因为我希望模型运行它自己的逻辑。我更喜欢:

  • 模型实现 Runnable
  • 模型包含 run() 中的所有逻辑
  • 控制器为模型创建线程并执行模型

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

【问题讨论】:

    标签: java swing model-view-controller


    【解决方案1】:

    Controller 和 View 紧密联系在一起。前者是服务器端,后者是客户端。

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

    View->Controller->Service->Persistence
    

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

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

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

    服务了解用例和工作单元。

    【讨论】: