【发布时间】:2008-10-11 13:58:58
【问题描述】:
在 winforms 应用程序中使用虚拟网格和 MVP 模式时,最好的职责分解是什么。
包括:
- 在用户更改单元格更新时从网格获取回调
- 从网格回调以设置给定行和列的单元格的样式和值
【问题讨论】:
标签: c# winforms grid virtual mvp
在 winforms 应用程序中使用虚拟网格和 MVP 模式时,最好的职责分解是什么。
包括:
【问题讨论】:
标签: c# winforms grid virtual mvp
被称为模型-视图-演示者的许多模式中的确切职责各不相同。主要是它们在演示者对视图施加多少控制方面有所不同。 Martin Fowler 在GUI Architectures 的章节中深入讨论了许多不同的变体,非常值得一读。
看看Presenter First,它更深入地处理适配器和职责。
Passive View 和 Supervising Controller 都值得一看。
模型(或领域模型)== 系统中涉及的实体的逻辑表示,包括它们的状态和行为
presenter == 监听来自视图(也可能是模型)的事件并为这些请求提供服务,将模型类型转换为视图类型(被动视图),这确实是隐藏视图和模型的管道。对用户的刺激做出反应。
view ==presentation:用户可以与之交互的模型的可视化表示,收集用户输入
您关于回调和获取网格单元样式的具体问题都将涉及视图处理来自网格的事件并将事件返回给演示者以请求操作或从模型中检索数据。这非常适合单元格内容更新时的回调(这需要发布给演示者,以便演示者可以验证模型中的更改并在模型中进行更改)。
对于网格单元样式,我认为视图中的某种适配器可能需要将模型中的状态(通过从视图到演示者的事件检索)转换为网格单元样式信息。这可能发生在演示者中,但我个人更希望演示者不了解视图中的小部件。
【讨论】:
如果我理解正确,网格是视图实现的一部分,对演示者不可见。在这种情况下,演示者不需要知道数据是如何显示的,只需要知道如何提供它们。
我可能会创建一个帮助类,一个与网格通信的某种适配器。网格只看到这个助手,视图也是如此。
合作可能是这样的:
网格 演示者
【讨论】: