在winforms应用程序中使用虚拟网格和MVP模式时,最佳责任细分是什么。

,包括:

  1. 在用户更改的单元格更新中从网格获取回调
  2. 从网格回调以设置给定行和列的单元格的样式和值
有帮助吗?

解决方案

许多模式中称为模型 - 视图 - 演示者的确切职责各不相同。主要是他们对演示者对视图的控制程度有所不同。 Martin Fowler在其关于 GUI架构的章节中深入讨论了许多不同的变体,这是值得一读的。

请查看 Presenter First ,因为它处理适配器和责任一些深度。

被动视图监督控制器值得一看。

模型(或域模型)==系统中涉及的实体的逻辑表示,包括它们的状态和行为

presenter ==从视图(可能是模型)监听事件并为这些请求提供服务,将模型类型转换为视图类型(被动视图),这实际上是将视图和模型相互隐藏的管道。对用户的刺激作出反应。

view == presentation:用户可以与之交互的模型的可视化表示,收集用户输入

围绕回调和获取网格单元样式的具体问题都将涉及视图处理来自网格的事件,并将事件提升回演示者以请求操作或从模型中检索数据。当单元格内容更新时,这非常适合回调(这需要发布到演示者,以便演示者可以验证模型中的更改并在模型中进行更改。)
对于网格单元格样式,我认为视图中的某种适配器可能需要将模型中的状态(通过视图中的事件检索到演示者)转换为网格单元格样式信息。这可能发生在演示者身上,但我个人更希望演示者不要在视图中了解窗口小部件。

其他提示

如果我理解正确,则网格是视图实现的一部分,并且对于演示者不可见。在这种情况下,演示者不应该知道数据的显示方式,只需知道如何提供数据。

我可能会创建一个辅助类,一个网格与之通信的某种适配器。除了这个助手之外,网格看不到任何东西,同样适用于视图。

合作将类似于:

grid <!> lt; - helper <!> lt; - view <!> lt; - <!> gt;演示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top