模型视图控制器 - 保持简单逻辑的位置

时间:2011-03-18 11:23:13

标签: actionscript-3 model-view-controller design-patterns

我经常看到模型视图控制器模式的非常不同的实现,并且完全理解你应该适应和使用最适合你需求的东西,但我想知道保持简单游戏的优点/缺点/最佳实践是什么以太逻辑控制器或模型?

从本质上说,这是我应该这样做的正确方法吗?

对于这个简单的例子,玩家受到了伤害,我列出了三种可能的处理方法:

1

位指示:

_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 个答案:

答案 0 :(得分:6)

模型中的因果,因为您可能有多个控制器(将来)以类似或相同的方式影响模型中的事物。控制器只是将UI事件转换为业务事件的一种机制。模型是处理逻辑的地方。

您可能会发现以下stackoverflow线程非常有用:

  1. Is the MVC-pattern a pure presentation-tier pattern?
  2. What do I call the code that orchestrates my web application?
  3. 虽然它们是特定于Java的,但这里讨论的想法与平台无关。

    希望有所帮助。