>> |
No.3446968
MVC-калькулятор:
Model:
- приватные переменные x, y; x - число на экране, y - число "в уме".
- методы: setX(val) - если новое значение, то диспатчит событие xChanged; getX(), getY() - геттеры, метод copyXtoY() - записывает значение x в y, диспатчит событие yChanged;
View:
- класс CalcView создает кнопки 0-9, сброс, +-*/=, по нажатию каждой диспатчит событие "нажата кнопка такая-то", так же содержит текстовое поле экрана.
- класс CalcViewMediator содержит обработчики событий предствления, в каждом событии просто вызывает соответствующую команду контроллера, например на onBtn9Pressed отсылает Controller.addNumber(9). Если у нас нет байндинга, то подписывается на события изменения модели, по ним обновляет текстовое поле в CalcView.
Controller:
- Содержит все нужные методы, которые изменяют модель.
Дальше самое интересное: всю работу делает феймворк. В главном классе декларативно описываются все зависимости, а он сам потом создает модель, представление CalcView, к нему новый экземпляр CalcViewMediator, в него кидает ссылки на CalcView и модель, создает контроллер, связывает сообщения представления с методами контроллера. В результате все это работает.
Плюсы этого подхода - любой функционал, который добавляется, именно добавляется, а не пришивается сбоку или вклинивается между существующим кодом.
|