iT邦幫忙

1

MVC的C表示什麼意思呢?

mvc
  • 分享至 

  • xImage

我在WIKI上查到如下的說明
https://zh.wikipedia.org/wiki/MVC
控制器(Controller)- 負責轉發請求,對請求進行處理。
視圖(View) - 界面設計人員進行圖形界面設計。
模型(Model) - 程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能)。
可是我還是不懂控制器(Controller)指的是什麼呢
能否以實際例子作說明呢?
例如:candy crush saga這遊戲的控制器(Controller)指的是什麼呢
謝謝!

看更多先前的討論...收起先前的討論...
peter109 iT邦新手 4 級 ‧ 2016-06-14 15:03:43 檢舉
怎麼排版都亂了(重貼)如下
我在WIKI上查到如下的說明
https://zh.wikipedia.org/wiki/MVC
控制器(Controller)- 負責轉發請求,對請求進行處理。
視圖(View) - 界面設計人員進行圖形界面設計。
模型(Model) - 程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能)。
可是我還是不懂控制器(Controller)指的是什麼呢
能否以實際例子作說明呢?
例如:candy crush saga這遊戲的控制器(Controller)指的是什麼呢
謝謝!
fillano iT邦超人 1 級 ‧ 2016-06-14 17:03:00 檢舉
你先確定Candy Crush Saga有應用MVC模式來開發再說吧?
peter109 iT邦新手 4 級 ‧ 2016-06-14 17:19:59 檢舉
我的意思是說
假這這套遊戲
要用MVC來開發
那C的部分是指哪方面
這樣我比較好懂
謝謝
fillano iT邦超人 1 級 ‧ 2016-06-14 17:25:06 檢舉
以iT邦幫忙為例,他的技術問答就是一個叫做questions的控制器,預設的動作是技術問答列表,後面帶問答編號時,帶出個別的問答,透過questions/create,則可以發問。你可以看到這些url有一定的規則,透過不同的方式發出請求,就能取得不同結果。這些就是控制器從中運作,其實主要就是根據請求的資料,調用相應的Model來處理,然後讓相應的View來顯示結果。
fillano iT邦超人 1 級 ‧ 2016-06-14 17:29:53 檢舉
如果是Game的話,大概是處理user input的部份。
peter109 iT邦新手 4 級 ‧ 2016-06-14 18:03:25 檢舉
如果以candy crush saga來說,是不是USER過了一關後得到分數,然後分數可以和好朋友作排名,就可以用一個排名的Controller

請問這樣對嗎?
謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
fillano
iT邦超人 1 級 ‧ 2016-06-14 18:14:36
最佳解答

如果要用Candy Crush做例子,個人認為要分成兩部分來看。

除了遊戲之外的操作,例如開始、結束按鈕、選單等等,都是容易整理出使用者input規則(在某個區域點擊,則調用某個model,顯示某個結果),而容易套用mvc模式。

遊戲本身的操作,會是一個需要特別處理的部份,就不能套用簡單的模式,這時就會需要改變規則了。(寫web後端大概不需要這樣變來變去,只要定好規則然後遵守)前面只是因應點擊區域的不同就套用不同的規則,現在可能要把可以操作的區域劃分開來,成為一個棋盤狀的區域,然後偵測在畫面上的連續滑動經過哪幾個區域,再把這幾個區域丟給處理遊戲資料模型的程式,讓他判斷消掉哪幾塊,畫面會怎樣變化,後續還會消掉哪幾塊,分數如何,是否達成過關條件等等。然後在把這些結果,在畫面上呈現。

都是使用者輸入,但是會因為需求而有不小的變化。遊戲本身是否能套用MVC模式,可能見仁見智。

尼克 iT邦大師 1 級 ‧ 2016-06-15 09:11:49 檢舉

好厲害的比喻,我都聽懂了。
原來寫GAME是這樣處理呀!

/images/emoticon/emoticon34.gif

Ruei iT邦研究生 1 級 ‧ 2016-06-17 11:22:51 檢舉

可惜自己用興趣搞出來的常常是一坨的(死

3
Ray
iT邦大神 1 級 ‧ 2016-06-14 17:42:25

Controller 管的是 User 和 Model 之間的溝通. Model 裡面只有商業邏輯, 但是他並不知道會由誰來觸發他? 而 Controller 則會根據 User 的行為, 決定要去觸發哪一個 Model....

(以上是我亂講的, 我根本沒寫過 MVC.......以下開放大師灌頂....)

我要發表回答

立即登入回答