2011-09-12 61 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值將傳遞給用於檢索模型的抽象方法。 –

相關問題