5

前一陣子我問了here,因爲我對這個話題很陌生,所以在理解MVC方面有所幫助。我認爲自己對此有相當的理解,這在我最近撰寫關於這個主題的blog post中有記錄。我的理解基本上歸結爲:MVC:模型和實體對象是否將概念分開?

控制器:確定完成請求需要做什麼,並根據需要利用需要收集/修改的任何模型。它基本上是一個給定過程的管理者。

觀看次數:僅限演示。一旦控制器收集到需要的東西,它會創建一個特定類型的視圖,將它傳遞給信息,並說「顯示給用戶,但是你這樣做」。

Models:應用程序的行爲。當控制器要求它提取或修改某些內容時,它知道如何去做。它也知道要觸發其他模型來完成相關任務(在我的理解中,當一個模型試圖在StackOverflow上「投票贊成」時,該模型知道要問是否也應該授予徽章,因爲控制器沒有需要關心)。

我的問題,假設所有這些都或多或少準確,是實體對象進來的地方?模型和實體是同一件事,每個對象知道如何保留自己的數據,或者實體是一個獨立的概念,它們獨立存在並在整個應用程序中使用?

我的錢在後者上,因爲這將允許模型獨立行事,而所有三層(模型,視圖和控制器)都可以利用實體​​根據需要傳遞數據。而且,對象和數據庫持久性看起來應該分開。

說實話,我對MVC的瞭解越多,我就越感到困惑。我準備好採用核心概念(單獨的邏輯演示),並以任何正確的方式與它一起運行,而不必太擔心「MVC」標籤。

回答

0

每個模型可以是一個包含一些控制和使用其數據的方法的實體。
夠了嗎?

+0

對不起,但我不太清楚你在說什麼。你能改述一下嗎? – AgentConundrum 2010-09-29 07:56:24

+0

真的很抱歉因爲我的英語...:P – 2010-09-29 07:57:50

+1

不用擔心。那麼,你是說模型和實體是一回事?我對此感到有點驚訝,因爲(正如我在我的問題中所說),似乎實體本身不應該擔心自己的持久性。 – AgentConundrum 2010-09-29 08:06:56

5

是的!

我的錢是後者,因爲這將讓模型獨立行事

你不想你的看法綁定到一個實體,因爲如果認爲還需要一些其他的一塊數據,你將不得不將它交給你的實體。該模型完全支持該觀點,並關注支持該觀點,而不是其他觀點。

例如,您顯示實體列表,您可能需要哪些其他數據?當前頁碼?總頁數?要顯示的自定義消息?

這就是爲什麼你應該綁定到一個模型,你可以隨意添加數據項目,因爲你需要。

更新

這裏是MVC的行動作出解釋......

控制器得到所有的請求所需的數據,並把它放入模型。然後它將模型傳遞給視圖。

該視圖然後處理模型中數據的佈局。

+0

我在想,一個控制器會根據需要調用盡可能多的模型來獲得所需的模型,並且這些模型會生成要傳回給控制器的實體。當控制器收集到需要的東西時,它會傳遞模型給出的實體集合,並且視圖使用這些實體生成其輸出。即控制器詢問模型的問題,誰給了控制器一個問題實體,誰發送實體來查看,其中有像'<?php echo $ question-> getQuestionTitle?>'即實體是源的意見數據。這是正確的嗎? – AgentConundrum 2010-09-29 07:55:22

+0

我會重新解釋你剛纔對這個答案的更新所說的話。 – Fenton 2010-09-30 08:29:31