2013-02-19 49 views
0

这可能是一个愚蠢的问题,但对于我目前的搜索,我已经找到了主要关于数据呈现以及Presenter和View之间相互作用的信息,但对Model和Presenter很少。MVP中的文件操作在哪里处理?

基本上说,我有一个C#应用程序,它打开一个CSV文件,它是一个5乘5的数字数组。现在,如果我想将5乘5的CSV数组加载到一个int数组中,那么在宏模式中处理的是哪里?

这是我目前的想法,遵循MVP,但请纠正我,如果我错了(或确认我是对的,如果我设法成为)。

  1. 用户单击按钮加载文件。
  2. 视图加载showOpenDialog()供用户选择文件。
  3. 用户在该对话框中单击确定后,View就会向包含该文件名的演示者发送一个事件。
  4. 演示者获取该文件名,处理打开的文件并将其解析为5 x 5的int数组。
  5. 然后,演示者通过事件将该int数组提供给Model。模型然后存储该数组。
  6. 该模型给出了一个事件,说它的数据已经改变。
  7. 演示者侦听并处理此事件,将该5 x 5 int数组放入DataTable中。
  8. 演示者提出一个事件,声明它具有新的DataTableready。
  9. 视图侦听并处理此事件,并使用DataTable提供的信息更新dataGridView。

我对MVP的理解在第5步有些模糊。这是应该怎么做,或者我误解了每个组件在MVP中的作用?

回答

2

你在MVP中利用事件的方式很有趣..但是我通常没有遇到它。

从我的经验,这是工作流程:

  1. 按钮在视图点击
  2. 视图显示在属性对话框的
  3. 查看存储的文件名
  4. 查看调用演示方法(例如,使用loadFile)
  5. 演示者使用View界面从属性中检索文件名
  6. 演示者a)使用服务执行l oading或b)加载文件本身
  7. 型号通过
  8. 模型传递回查看过的loadFile方法
+0

这是不是尽可能多的“我的路”,因为它的服务或演示要么建是“我的猜测”。作为后续问题,何时使用服务来加载文件更合适,而不是让演示者自己加载它们? – Xantham 2013-02-19 18:34:40

+0

这取决于。一般来说,当你的业务逻辑变得更复杂。在我自己的应用程序中,我通常会以任何一种方式合并服务层......但由于逻辑层次的原因,我们总是这样做。 – 2013-02-19 22:31:18

相关问题