Зависимости и обратные вызовы в пользовательском интерфейсе - PullRequest
0 голосов
/ 28 апреля 2011

Возьмите программное обеспечение для торговца рыбой.Чтобы продать определенный вид рыбы, пользовательский интерфейс показывает изображение рыбы.Пользователь может щелкнуть по нему, после чего появится окно, в котором он может выбрать другую рыбу.

В простой реализации компоненту необходим

  • доступ к FishImageLibrary, чтобы получитьизображение
  • доступ к FishSelectionPopup, чтобы запросить у пользователя новую рыбу

Решение 1. Передайте оба класса. Проблема в том, что наш компонентможет быть внутри другого компонента.Таким образом, эти два класса должны были бы быть переданы нашему компоненту, создавая повсеместные зависимости.

Решение 2. Обратные вызовы. Реализация с использованием обратных вызовов также не была бы очень чистой, потому чтоКомпонент может находиться внутри другого компонента, и событие должно распространяться по всей иерархии.Это требует изменений в нескольких классах.

Есть предложения для действительно чистого решения?

1 Ответ

1 голос
/ 28 апреля 2011

Итак, это будет своего рода окно с изображением, показывающее, какая рыба выбрана, и открывающее всплывающее окно выбора при нажатии.

Я предполагаю, что это будет часть более крупной структуры, работа которой заключается в представлении выбранногорыба.Возможно, есть ярлык с именем рыбы, другой, который представляет размер. Я бы хотел, чтобы их родительский компонент устанавливал их значения при выборе рыбы.Он будет знать FishImageLibrary и сможет получить адрес изображения на основе рыбы.

Для всплывающего окна я думаю, что шаблон команды является довольно стандартным для такого рода проблем.Он позволяет передавать стандартизированный объект в графическое окно, в котором не требуется знать особенности реализации OpenSelectionPopup, который сам знает о FishSelectionPopup и о том, как его открыть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...