Пользовательский интерфейс и его модель

Типичная многослойная архитектура делится на уровни «представления», «предметной области» и «долгосрочного хранения данных». На практике основной код размещается на уровне представления, уровень предметной области превращается в набор анемичных контейнеров данных, а уровень долгосрочного хранения вырождается в вызовы функций инфраструктуры.

В то же время часть важной информации дублируется между уровнями. Например, максимальная длина фамилии представляется в виде ширины поля базы данных (возможно – в виде правила проверки данных в предметной области) и как параметр свойства JTextField в пользовательском интерфейсе.

В то же время в представление должна внедряться логика типа «если этот флажок установлен, снять блокировку с этих четырех текстовых полей». На первый взгляд кажется, что это утверждение относится к пользовательскому интерфейсу, но в действительности в нем отражена часть бизнес-логики: если посетитель является членом Портретного клуба, то приложение должно сохранить его личный номер и срок пребывания в клубе.

Таким образом, в типичной трехуровневой архитектуре часть информации распространяется между уровнями, а другая важная информация прячется в логике управления GUI.

В конечном итоге мы решили эту проблему инвертированием обычных отношений GUI с уровнем предметной области. Мы возложили на предметную область ответственность за разделение экранного представления и логических манипуляций со значениями и свойствами.

Related posts:

  1. Пользовательский интерфейс
  2. Один факт в одном месте
  3. Общая модель программирования Darkstar
  4. Интерфейс модуля
  5. Минимум потери данных

Подпишитесь на рассылку по почте:

Введите свой адрес почты, чтобы получать уведомления о новых статьях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>