模型视图控制器:在哪里有条件地将新数据提取到模型中?

时间:2015-01-22 16:22:15

标签: java user-interface model-view-controller eclipse-rcp jobs

我有一个带有ViewPart的Eclipse RCP应用程序,它遵循模型 - 视图 - 控制器(MVC)设计。该模型是持有当前数据的POJO。 ViewPart是侦听模型更改并在必要时重新加载UI的视图。

在我的应用程序逻辑中,我想在用户从列表中选择条目时将新数据提取到模型中。由于数据是从服务器获取的,因此我使用Eclipse Job框架在另一个线程中执行此操作,以便不阻止UI。

现在,我正在努力寻找创建和开始后台工作的最佳位置。你对此有什么建议吗?我看到两种可能的方式:

  • 控制器中。为此,控制器还需要监听模型中的变化。当获取新数据并且控制器更新模型时,作业是否应通知控制器;或者我应该将对模型的引用传递给自己更新模型的作业吗?
  • 模型中。我看过参考文献,说数据提取应该是模型的一部分。通过这种方式,我可以直接控制模型中哪些条件触发了新数据的加载。这可以被视为一种“商业逻辑”。但后来我依赖于模型中的Eclipse内部,因此它不再是一个独立的实体(更难测试)。

修改 我知道MVC的定义相当松散。如果我使用例如Model-View-Presenter设计,答案会有所不同或更清楚吗?恕我直言,MVP主持人的责任略有明确。

1 个答案:

答案 0 :(得分:2)

我会说...

User selects list entry -> controller handles event -> controller starts a job, passing the model -> job updates model -> UI updates based on change in model (if necessary)

我的理由......

控制器的作用是处理UI事件 - 列表条目选择。从那里,您从服务器获取数据并将其注入模型。在我看来,这应该与模型保持分开(即外部) - 例如,您可以更改正在使用的网络库,而不会影响数据模型。