Здравствуйте, cppguard, Вы писали:
C>Переодически приходят заказы на разработку настольных приложений, и каждый раз я смотрю на разработку UI как баран на новые ворота. В основном из-за непонимания как эффективно разделять модель и представление. Какие хорошие книги или серии статей есть на эту тему?
Создай класс-фасад с методами-бизнес логики: добавить то-то, удалить то-то, посчитать то-то. В общем, то, что делает твое приложение.
Методы этого класса — это контракт между моделью и представлением. Для выполнения любых операций представление должно работает только с этим классом и ни с чем больше.
Представление может быть реализовано как угодно — создавай любые классы — для окон, для настроек, и т.п.
Реализация бизнес-логики тоже как угодно — создавай классы для алгоритмов, бизнес-объектов, файлов, внешних сервисов и т.п.
Если возникают сомнения, является ли что-то бизнес-логикой (должно быть в модели) или логикой представления (должно быть в представлении), то представь сразу что ты в дальнейшем разработаешь другие интерфейсы, кроме графического будет текстовый, голосовой и т.п. Если поведение одинаковое для всех видов интерфейсов — это бизнес-логика, если отличается — это представление.