Здравствуйте. Один мой друг пишет таймер в браузере. И у него когнитивный диссонанс от не понимания сути шаблона MVC. Пожалуйста объясните ему
Есть M, V и С. И есть объект timer, который содержит текущее состояние (сколько секунд осталось, сколько задано, и т д). Еще timer бросает события «second_tick» (секунда тикнула) и «timeout»
Поскольку M на самом деле предметная область (domain), в дальнейшем буду звать ее D, чтоб не путаться
Логика в том, что пока таймер тикает, на экране отображается один V (отсчет времени). При наступлении же «timeout», V сменяется на другой (окно выбора времени для нового таймера)
Вопрос. Чему объект timer должен принадлежать? D или C?
Если таймер в D, значит D может менять состояние и самостоятельно. И C должен подписаться на эти изменения, выполнить логику и сменить V. Что вроде бы не совсем канонично (в статьях пишут, что C - единственный источник изменений для D)
Если таймер в C, то получается что самая мякотка, ядро приложения (таймер) не на своем месте (не в D)