2010-08-17 50 views
28

我見過寫代碼的地方,幾乎所有與路由無關的代碼都被傳遞給模型。我還看到了所有數據庫持久性均由模型處理的代碼,但非數據庫處理由控制器處理。,你在哪裏繪製控制器和模型之間的界限?

哪種方法更好?

+2

可以複製? http://stackoverflow.com/questions/467113/fat-models-skinny-controllers-and-the-mvc-design-pattern – 2010-08-17 04:31:05

回答

39

控制器和模型之間的界限實際上非常清晰。

模型是您的應用程序的心臟。它包含解決您的應用程序寫入問題所需的業務/域邏輯。該模型通常分成幾個其他層,例如,持久性,服務,領域等。這是一個常見的誤解,即模型只是數據庫,而數據庫應該是ActiveRecord是一種常見的誤解。

控制器(和視圖)是表示層的一部分。控制器的唯一責任是接收並處理針對您的應用的用戶輸入,並將其委託給模型中的相應部分。而已。它不應該處理複雜的應用程序流程或問題域的代碼。 You want controllers to be skinny and models fat with logic。模型不應該知道無論是C或V,你應該能夠換出V和C爲不同的表示層,而無需觸摸你M.

MVC Excerpt in Patterns of Enterprise Application Architecture

+2

我站了起來(或者說,坐在我的電腦桌上的椅子上......)糾正了。 +1 – BoltClock 2010-08-17 09:32:24

相關問題