2011-10-12 23 views
0

想,作爲一個iPhone應用程序的一部分,我需要顯示用戶的某些部分對象的列表。在MVC,澄清對象的責任需要

模型

  • 表示實際的對象要顯示
  • 愚笨數據,吸氣劑的收集和setter

視圖

  • 顯示該列表,通行證接收動作至控制器
  • 表示層

的控制器

  • 解釋從視圖接收動作和發生在數據動作
  • 視圖和數據之間算符

在這幅圖中,將是控制者對人的責任ist模型到磁盤,還是它應該是Model邏輯的一部分?要求做到這一點將來自控制器,但是,如果控制器知道如何將數據保存到磁盤,或者數據是否知道如何將自己保存到磁盤?

回答

1

這是不對的。

模型負責所有的業務邏輯。此外,型號不直接瞭解數據庫或任何其他數據存儲介質。當模型初始化時,它接收工廠創建的DAO或DataMapper,它們負責存儲和檢索信息。

控制器解釋從視圖中接收到的信息,並改變模型和視圖的狀態。

視圖通過觀察者模式(經典MVC)或模型(Model2 MVC)的請求數據從持久模型接收信息。

1

我可以看到這是怎麼回事兩種方式。我會認爲這種邏輯通過這種方式進入模型,控制器更清潔一些。此外,如果您使用的模型之間的此功能,它主要是一致的e.g $person->saveData()$user->saveData()那麼你可以地延長了基礎模型,因此會被其他車型繼承和保存你重複的代碼。

如果將此邏輯併入模型中,將其設置爲足夠靈活以便控制器可以覆蓋持久數據可能是個好主意。因此,也許,將參數傳遞到模型功能$person->save(false)false將防止模型持久化數據,但在默認情況下會true