2011-03-18 105 views
4

我經常看到的模型視圖控制器模式非常不同的實現,並且完全明白,你要適應和使用什麼適合您需要的最好的,但我不知道會是什麼優點/控制器或模型保持簡單遊戲邏輯的最佳做法?模型 - 視圖 - 控制器 - 在保持簡單的邏輯

在本質上這是正確的做法,我應該這樣做呢?

這個簡單的例子,球員接受損傷,我列出了對付它的三種可能的方式:

位指示:

_model.playerDamage - 15; 
if (_model.playerDamage <= 0){ 
    _model.playerLives --; 
    _model.restartLevel(); 
} 

2。

控制器:

_model.playerDamage = 15; 

模型:

function set playerDamage(value:int){ 
    playerDamage = value; 
    updatePlayer(); 
} 

function updatePlayer():void{ 
    if (playerDamage<=0){ 
     palyerLives --; 
     restartLevel(); 
    } 
} 

3.

控制器:

_model.playerDamage = 15; 
_model.addEventListener('playerChange', checkPlayerStatus); 

function checkPlayerStatus(e:Event):void{ 
    if (_model.playerDamage<=0){ 
     _model.playerLives --; 
     _model.restartLevel(); 
    } 
} 

型號:

function set playerDamage(value:int){ 
    playerDamage = value; 
    dispatchEvent(new Event('playerChange')); 
} 
+1

第二種方式 – www0z0k 2011-03-18 12:02:15

+0

好,謝謝恕我直言 - 你會因此保持模型中的所有邏輯?並只使用控制器來設置模型中的東西? – davivid 2011-03-18 12:44:29

+0

我會使用模型作爲數據結構的API - 你可以檢索你輸入所有需要後所需要的 - 並沒有其他人應該知道如何計算這個值:)和控制器只是爲了打發數據 – www0z0k 2011-03-18 13:22:47

回答

6

Ofcourse的模型,因爲你可能有多個控制器(在未來)的影響模型的東西相似或相同的方式。控制器只是將用戶界面事件轉換爲業務事件的一種機制。模型是夯實邏輯的地方。

您可能會發現下面的計算器線程有用:

  1. Is the MVC-pattern a pure presentation-tier pattern?
  2. What do I call the code that orchestrates my web application?

雖然他們是特定於Java,但這裏討論的想法是平臺無關的。

希望有所幫助。

+0

感謝這使得它多清晰。 – davivid 2011-03-18 13:52:11