Существует ли объектно-ориентированная парадигма проектирования, которая допускает переменный графический интерфейс и модель данных?
Мой симулятор игры в кости раздражает меня несколькими способами, и все это связано с объектно-ориентированным дизайном:
- выбор пользователем теста на кости влияет на то, что должно отображаться в интерфейсе пользователя, а также на то, что должно являться частью объекта, представляющего данные теста
- выбор пользователем параметров теста влияет на то, что должно отображаться в пользовательском интерфейсе, а также на то, что должно являться частью объекта, представляющего данные теста
Другими словами, мой графический интерфейс является переменным, а моя модель данных - переменной - они оба зависят от ряда потенциальных условий, полученных при вводе данных от пользователя. Обычный метод, который я использовал для обработки изменений, - это переключатели и операторы if, но они запутанные, громоздкие и вложенные.
Существует ли объектно-ориентированная парадигма проектирования, которая допускает изменения в графическом интерфейсе и модели?
2 ответа
Как и в случае большинства проблем, решение заключается в добавлении большего количества слоев абстракции:)
Посмотрите на MVC, MVP и MVVM *. Это шаблоны, предназначенные для разделения обязанностей между пользовательским интерфейсом и данными. Поскольку вы хотите во время выполнения переключаться между моделями (данными) и пользовательским интерфейсом (представлением), вам может потребоваться создать дополнительную абстракцию, контракт, чтобы позволить любому представлению связываться с любыми (или определенным подмножеством) данными.
* Эта ссылка, безусловно, не единственный источник, но поиск в Интернете (и, конечно, переполнение стека) поможет вам разобраться с этими шаблонами.
Три самых популярных:
MVC, если веб MVP, если настольный MVVM
Я разместил об этом ранее и предоставил диаграммы: http://carnotaurus.tumblr.com/post/2748019388/visual-pattern-links
Я также предлагаю разделить DAL на две части, чтобы помочь в целях тестирования