2015-06-04 3 views
0

Я понимаю, что бизнес-логика принадлежит модели, а прикладная логика принадлежит контроллеру. Может ли кто-то прояснить, что бизнес-логика делает и не включает, и какая логика приложения делает и не включает. Рассмотрение таких вещей, как перенаправления, диалоговые окна подтверждения и т. Д.Контроллер и разделение модели/обслуживания логики

например.

/** 
     * Removes a product 
     * @param product 
     */ 
     _this.remove = function(product){ 
      if(confirm('Are you sure you want to remove "' + product.product_name + '"?')){ 
       var idx = _this.currentProductsOrdered.indexOf(product); 
       _this.currentProductsOrdered.splice(idx, 1); 
      } 
     }; 

или должен ли я иметь диалоговое окно подтверждения в контроллере, а затем вызвать метод удаления?

ответ

1

«К сожалению, прагматичный ответ: « это зависит ». «Модель MVC не обязательно« все, что она взломала ».

Тем не менее, я полагаю, что вы можете осмысленно разделить проблему на этой линии: «„Пользовательский интерфейс“ ... против ... „не“»

Например: «в цельные обмениваться с Gentle User, независимо от того, что это такое, и независимо от того, какие технические махинации могут быть связаны с его исполнением, «вероятно, подпадает под эгиду« User Interface == Controller ».

В конце концов, пользователь зафиксирует действие . «Ладно, пользователь действительно хочет, чтобы этот продукт ушел, так что будь таким».

Теперь вы подключаете слой модели и говорите ему: «Будь так!» Команда, данная слою модели, на данный момент является «обязательной командой».

(Конечно, модель может ответить:. «! Нет, я отказываюсь» В этом случае вы должны вернуться в пользовательский интерфейс)

В принципе, как я это вижу, «контроллер = = Пользовательский интерфейс "и" Модель == На самом деле влияет на данные ". Но: «это руководство.« Это просто не установлено в камне.

Смежные вопросы