Существует ли объектно-ориентированная парадигма проектирования, которая допускает переменный графический интерфейс и модель данных? - PullRequest
0 голосов
/ 19 февраля 2011

Мой симулятор игры в кости раздражает меня несколькими способами, и все это связано с объектно-ориентированным дизайном:

  • выбор пользователем теста на кости влияет на то, что должно отображаться в пользовательском интерфейсе, а также на то, что должно входить в состав объекта, представляющего данные теста
  • выбор пользователем параметров теста влияет на то, что должно отображаться в пользовательском интерфейсе, а также на то, что должно входить в состав объекта, представляющего данные теста

Другими словами, мой графический интерфейс является переменным, а моя модель данных - переменной - они оба зависят от ряда потенциальных условий, полученных при вводе от пользователя. Обычный метод, который я использовал для обработки изменений, - это переключатели и операторы if, но они запутанные, громоздкие и вложенные.

Существует ли объектно-ориентированная парадигма проектирования, которая допускает изменения в графическом интерфейсе и модели?

Ответы [ 2 ]

1 голос
/ 19 февраля 2011

Как и в большинстве проблем, решение заключается в добавлении большего количества слоев абстракции:)

Посмотрите на MVC, MVP и MVVM *. Это шаблоны, разработанные для разделения ответственности между пользовательским интерфейсом и данными. Поскольку вы хотите переключаться во время выполнения между моделями (данными) и пользовательским интерфейсом (представлением), вам может потребоваться создать дополнительную абстракцию, контракт, чтобы позволить любому представлению связываться с любыми (или определенным подмножеством) данными.

* Эта ссылка, безусловно, не единственный источник, но поиск в Интернете (и, конечно, переполнение стека) поможет вам разобраться с этими шаблонами.

0 голосов
/ 19 февраля 2011

три самых популярных:

MVC, если веб-MVP, если настольный MVVM

Я писал об этом ранее и предоставил диаграммы: http://carnotaurus.tumblr.com/post/2748019388/visual-pattern-links

Я также предлагаю разделить DAL надва, чтобы помочь в целях тестирования

...