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

hal*_*ter 8 c# wpf

我一直试图完全理解Model View Presenter模式,因为它适用于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/

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

Nic*_*oiu 4

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

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