1

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

包含:

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

2 回答 2

1

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

看看Presenter First,因为它在一定程度上处理了适配器和职责。

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

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

Presenter == 监听来自视图(也可能是模型)的事件并为这些请求提供服务,将模型类型转换为视图类型(被动视图),这确实是隐藏视图和模型的管道。对来自用户的刺激做出反应。

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

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

于 2008-10-12T01:40:30.917 回答
0

如果我理解正确,网格是视图实现的一部分,对演示者不可见。在这种情况下,演示者不需要知道数据是如何显示的,只需要知道如何提供它们。

我可能会创建一个帮助器类,某种适配器,网格与之通信。网格只看到这个助手,视图同上。

合作将是这样的:

网格 <-- 助手 <-- 视图 <--> 演示者

于 2008-10-11T22:24:51.403 回答