Показать сообщение отдельно
  #11 (permalink)  
Старый 13.01.2019, 15:18
Аватар для VооDоо
Интересующийся
Отправить личное сообщение для VооDоо Посмотреть профиль Найти все сообщения от VооDоо
 
Регистрация: 09.01.2019
Сообщений: 14

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 об этом ничего не говорит и оставляет на откуп программиста. Изобразил, в чем суть конечного автомата (за каждой стрелкой еще стоит условие перехода из одного состояния в другое):



К сожалению, бот и юзер слишком разные сущности, чтобы делать их одним классом... не смотря на кажущуюся одинаковость.

Последний раз редактировалось VооDоо, 13.01.2019 в 15:41.
Ответить с цитированием