假設我有一個超類,Model
。假設我也有兩個子類,NumberModel
和StringModel
,一個存儲一個數字,另一個存儲一個字符串。爲了實現MVC方案,我提出了兩個視圖,NumberView
和StringView
,它們可以編輯和顯示模型數據。MVC:如何正確創建未知模型的視圖
然後我有一個列表Model
s。不幸的是,現在我不知道哪個Model
處理數字和字符串,所以如果我想爲它們創建視圖,我會打破面向對象的範例。
除非......
我做出Model
的方法稱爲constructView()
返回一個適當的視圖,並在子類覆蓋它。但突然之間,我讓模型意識到了這個觀點,而且這在MVC方案中也不太好。
從設計的角度來看,什麼纔是正確的實現方式?
你爲什麼不能在控制器,查看基於模型的使用,這樣的模型完全不認識該視圖將呈現決定。只有管制員有這方面的知識 –
一旦我創建了這種類型的結構(將類和各種特徵抽象爲具體特徵的共同特徵),我必須在許多地方複製這種結構。我討厭使用'switch'來達到這個目的。多態性要好得多。 –