我正在按照 MVP 模式设计一个 Winforms MDI 应用程序,但我遇到了一些与我的应用程序不同部分之间的通信相关的问题。
这是此应用程序的简单图片: 1 - 左侧是树视图 2- 中间是绘图组件 3- 右侧是“属性”表单。这 3 个部分由 MVP 三元组管理(好吧,不是真的,模型对所有三元组都是通用的)
当我点击树视图上的一个节点时,我想在绘图组件中看到对应选定对象的绘图,我想在属性表单中看到这个选定对象对应的一些属性。
我的基本问题是: a) 在哪里存储“选定对象”信息?b) 如何警告“选定对象”已更改的绘图组件和属性表单?
我开始想象一些解决方案,但我很不高兴。
我不购买将“选定对象”放入模型中并执行观察者同步。“选定对象”不属于模型
所以我想,我会将此信息存储在演示者中如果我将“选定对象”放在 Treeview 演示者中,在我看来,绘图组件的演示者和属性表单的演示者都必须持有树视图演示者的引用,以检索此信息。
它在演示者之间产生了一些耦合,我也不喜欢。
所以我正在寻找其他想法和/或评论。谢谢你的时间。