Model View Controller - где хранить простую логику - PullRequest
4 голосов
/ 18 марта 2011

Я часто вижу очень разные реализации Pattern View Controller Pattern, и полностью понимаю, что вы должны адаптировать и использовать то, что соответствует вашим потребностям наилучшим образом, но мне было интересно, каковы будут преимущества / недостатки / лучшие практики ведения простой игры логика в эфире контроллер или модель?

В сущности, как правильно мне поступить?

для этого простого примера игрок получает урон, и я перечислил три возможных способа борьбы с ним:

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 Ответ

6 голосов
/ 18 марта 2011

Конечно в модели, потому что у вас может быть несколько контроллеров (в будущем), которые влияют на вещи в модели одинаковым или одинаковым образом.Контроллеры - это всего лишь механизм для преобразования событий пользовательского интерфейса в бизнес-события.Модель - это то место, которое ограничивает логику.

Вам могут пригодиться следующие потоки stackoverflow:

  1. Является ли MVC-шаблон чистой моделью уровня представления?
  2. Что я называю кодом, который управляет моим веб-приложением?

Хотя они специфичны для Java, но обсуждаемые здесь идеи не зависят от платформы.

Надеюсь, это поможет.

...