我们正在使用 MVP,但问题本身不一定是 MVP 特定的。基本上,演示者需要知道模型是否发生变化,以便他们可以处理这些变化并将其反映到他们的视图中。
这将很容易在模型中使用事件,但是模型也包含其他模型对象 - 它们可以由不知道根模型或其任何演示者的演示者+视图修改。
这是此类模型的简化示例:
class Document
{
Header header;
List<Paragraph> paragraphs;
Footer footer;
}
假设有两个演示者和视图创建文档的表示;DocumentEditPresenter/-View 和 DocumentPreviewPresenter/-View。
然后会有用于文档组成的模型的模型;HeaderPresenter/-View、ParagraphPresenter/-View 和 FooterPresenter/-View。
DocumentEditPresenter 将在从其视图中获取事件后为段落创建 ParagraphPresenter/-View。然后,此 ParagraphPresenter 将修改段落 - DocumentEditPresenter 和 DocumentPreviewPresenter 都应该获得某种信号来刷新。
我知道一种解决方案是所有模型都包含对其父项和/或有关每个可能修改的事件的引用,但它似乎过于复杂并且会使编辑模型容易出错。该模型也应该是可序列化的。
类似于 WPF 的路由事件的东西将是完美的。