2009-01-15 74 views
0

我正在使用MVC模式創建pacman遊戲。根據this diagram on wikipedia模型和視圖交互。控制器是否處理與MVC中模型的所有交互?

「注:實線表示的直接關聯,而虛線表示的間接的關聯」

從我的理解

現在,當然一切都通過控制器?比如說,玩家移動或用戶點擊添加到購物車,那麼是否會被控制器處理並且控制器操縱模型中的適當數據?

我看不到爲什麼視圖會直接與模型相互作用?

由於

亞當

回答

1

視圖得到它應該從模型顯示數據。 (例如:購物車中的物品清單)

1

的確,從您的視圖中修改模型的原因確實很少(這是一個禁忌),但您最終可能會訪問(如閱讀)你的觀點的模型。

讓我們來做一些僞代碼。

假設你有一個Player和一個Game模型。

你的控制器可以這樣做:

player1 = new Player(); 
player1.setLives(3); 
player1.setScore(0); 
player1.setPosition(0, 0); 
game = new Game(); 
game.addPlayer(player1); 
game.launch(); 

然後,你的看法可能會做這樣的事情:

foreach (game.getPlayers() as player) { 
    gameBoard.draw(pacmanGlyh, player.getPosition()); 
} 

你看,你正在使用從視圖模型。

但請記住,關於如何實現MVC的哲學,從一個程序員到另一個程序員略有不同。有些人可能會建議使用observer pattern,這取決於你在做什麼。 MVC的最終目標是將您的業務邏輯與用戶界面分離開來,使您在維護和重構時更輕鬆,並且保持代碼清潔。

0

不,視圖從模型中讀取數據(通常使用觀察者模式)。 PAC(presentation-abstraction-controller)是使用中介模式的基於MVC的模式的一個很好的例子 - 控制器在視圖和模型之間傳遞消息。

相關問題