存储库设计模式指导

时间:2011-03-11 19:41:12

标签: wpf design-patterns mvvm

假设您有一个MVVM CRM应用程序。

您通过存储库在内存中拥有许多客户对象。

从GUI处理与传统MVVM任务无关的任务的适当位置是什么?

例如,假设您每隔几分钟检查一下他们的地址是否有效,如果不是则会弹出通知。或者您想发送每小时的电子邮件更新。或者您想要弹出一个窗口提醒您在特定时间给客户打电话。

这个逻辑在哪里?它不是GUI /面向行动的,我认为它不适合存储库。

1 个答案:

答案 0 :(得分:1)

我认为你所问的是,“我的MVVM实现应该如何处理与用户输入不直接相关的GUI相关任务?” (如果我误解了你,请告诉我。)

您描述的任务很可能由计时器协调。如果您将计时器的勾号框定为“用户操作”,那么它与传统的命令模型并没有什么不同。

这意味着视图模型将管理计时器并在响应中更新自身。它可以在向用户显示通知时设置属性,并且视图可以响应该属性的更改并显示弹出窗口。重要的概念是视图模型仍然负责协调行为,视图只是反映视图模型的当前状态。

(每小时电子邮件更新不是与GUI相关的任务,因为它不会与用户交互;我将其中的一个留在了混合中。)

对于实现定时行为的对象,@ epitka通过描述服务的概念来击中头部。通常,服务协调跨多个存储库或其他服务的行为。它们代表了无法分配给任何一个特定实体的特定于域的逻辑。