Model-View-Presenter:为什么模型是静态的?

8
我一直在尝试深入了解C#中的模型视图控制器模式。我有一个问题无法理解。
在许多示例中,我注意到模型被定义为静态,并在Presenter基类(通常是泛型类)中构建。
那么,在这种情况下如何拥有多个模型类?据我所知,每个创建的Presenter只能引用一个模型类。
我现在正在查看的示例可以在此处找到:http://wesaday.files.wordpress.com/2009/01/finalzip.doc(重命名为.zip)。它来自于这个教程:http://wesaday.wordpress.com/2009/01/30/winform-model-view-presenter-part-v-the-view/ 我猜我总体上遇到的问题是看不出像上面那个示例如何适应具有多个视图/Presenter/模型的工作应用程序。
1个回答

4
这只是为了避免在示例中加入完整的IoC实现而进行的简化。MVP三元组通常由运行时独立(即:不是静态、单例或其他共享方式)的实例表示。在一些特殊情况下,模型可能是一个共享实例,但这通常是例外而不是规则,并且通常仅适用于只读表单或控件。

我想我明白了。这是否意味着Presenter类应该始终实例化一个Model类(因为它不是共享实例)? - halohunter
2
演示者应该实例化一个新的模型实例或从外部源接收它。例如,我通常会在我的基础演示者中添加一个Initialize(model, view)方法,然后根据模型值应用逻辑来确定如何实例化模型。如果值为null,则调用抽象方法以允许子类创建新的模型实例。如果值对应于模型的类型,则演示者简单地将其用作其模型。如果值对应于模型ID的类型,则ID值被传递给一个抽象方法以检索模型。 - Nicole Calinoiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接