2009-07-03 40 views
0

像www.halifax.co.uk這樣的網站提供不同的產品類別,例如抵押貸款和儲蓄。抵押和儲蓄產品將包含不同的數據字段。這不適合在大多數情況下使用單個產品控制器。單個產品控制器或每個產品類別的控制器?使用不同的產品類別創建ASP.NET MVC應用程序

回答

1

簡單的答案是,它取決於每個產品類別帶有的「業務邏輯」的數量。您必須查看您的域模型,並查看您的產品類別在您的域中的真正含義。

以拍賣網站爲例,重點在於產品。該類別實際上只是可用於標記產品的字符串層次結構。由於可用的類別也日益增長和縮小,因此爲每個類別創建一個控制器會造成維護噩夢。

在銀行網站的情況下,重點在於每個單獨的產品類別,如「儲蓄賬戶」,「信用卡」等。這些不同類別之間存在很多差異,因此創建單個控制器更有意義爲他們。

1

一方面,這些產品類別中的每一個可能具有不同數量和類型的字段。然後一個簡單的方法是擁有不同的控制器,每個控制器導致不同的視圖,強烈地鍵入不同的模型。 「抵押」將是一個模型,具有自己的字段,以及其自己的索引,詳細信息,編輯和刪除視圖以及MortgageController。類似的儲蓄。這是使用強類型視圖的ASP.NET MVC應用程序最簡單的方法。請注意,即使在這種情況下,通過對控制器(以及模型和當然視圖)的仔細維護和重構,可以消除或最小化複製。

但是,我建議分析這些產品類型中的每一個的行爲。如果實際上它們都表現相同,那麼有辦法解決不同數量或類型的問題。例如,所有不同類型的模型都可以繼承一個通用的基類,或者實現一個通用的接口(後者可能是兩種解決方案中最好的 - 但在這種情況下,如果您偏好繼承或組合,則很難說。這些只是兩種可用於開發「弱類型」視圖和控制器的選項。

我不能說你是否應該按照你給出的簡要描述去做某種方式,但我確信答案是在模型的行爲中(而不是它們的結構)。根據我個人的經驗,行爲相同的模型(例如:它們都暴露相同的CRUD操作)應該以單一方式處理,但行爲差異(例如:當特定類型的模型正在被驗證時要驗證的不同業務規則保存)需要在一個接一個的情況下處理。 HTH

相關問題