2011-09-12 60 views
8

我一直试图完全理解模型视图演示模式,因为它适用于C#。我有一个问题,我无法包裹我的头。模型 - 视图 - 演示者:为什么模型是静态的?

在很多例子中,我注意到模型被定义为静态,并且在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/

我所遇到的总体问题的猜测是看到上面的例子如何适应具有多个视图/演示者/模型的工作应用程序。

回答

4

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

+0

我想我明白了。这是否意味着演示者类应始终实例化模型类(因为它不是共享实例)? – halohunter

+2

演示者应该实例化一个新的模型实例或从外部源接收它。例如,我通常为我的基本演示者添加一个Initialize(model,view)方法,然后根据模型值应用逻辑来确定如何实例化模型。如果值为null,则调用抽象方法以允许子类创建新的模型实例。如果该值对应于模型的类型,则演示者将其用作其模型。如果该值对应于模型ID的类型,则ID值将传递给用于检索模型的抽象方法。 –

相关问题