RX200,
Спасибо за подробные подсказки! Наконец-то, до меня начинает доходить, что MVC - это не паттерн как таковой, а абстрактная "идеологическая" структура и каждый ее реализует как-то по своему.
Обидно, конечно... Создавая эту тему, я надеялся, что существует какой-то паттерн или подход универсальный на все случаи жизни. Чтобы изучив его структуру, можно было спокойно писать любые приложения. Похоже, что структуру программы приходится каждый раз строить с нуля используя какие-то абстрактные подходы типа MVC и более мелкие уже паттерны проектирования.
Как я понял MVC, это что-то вроде такого:
var game = {};
/* MODEL */
game.model = {
// хранилище данных
cards: ['card1', 'card2', 'card3'],
// извлечь данные из хранилища
go: function() {
return game.model.cards[0];
},
// записать данные в хранилище
save: function(card) {
game.model.cards.push(card);
}
}
/* VIEW */
game.view = {
// отобразить данные в интерфейсе
show: function(card) {
desk.innerHTML = card;
},
// забрать данные из интерфейса
get: function() {
return desk.innerHTML;
}
}
/* CONTROLLER */
game.controller = {
// взять данные у VIEW и отправить в MODEL
add: function() {
game.model.save(game.view.get());
},
// взять данные у MODEL и отправить VIEW
show: function() {
game.view.show(game.model.go());
}
}
Лично мне в этой структуре не хватает еще блока с логикой. Похоже, MVC об этом ничего не говорит и оставляет на откуп программиста. Изобразил, в чем суть конечного автомата (за каждой стрелкой еще стоит условие перехода из одного состояния в другое):
К сожалению, бот и юзер слишком разные сущности, чтобы делать их одним классом... не смотря на кажущуюся одинаковость.