Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Мотивация

Читайте также:
  1. В. Меркантильная мотивация подделок
  2. Г Мотивация подделок в пользу групповых интересов
  3. Д. Пропагандистская мотивация подделок
  4. Е. Мотивация материальной заинтересованности антиквариев в подделке
  5. Ж. Мотивация коллекционирования старинных вещей
  6. Инструментальная мотивация.
  7. Мотивация
  8. Мотивация
  9. Мотивация
  10. Мотивация

Рассмотрим контекстно-зависимую оперативную справку в графическом ин­терфейсе пользователя, который может получить дополнительную информацию по любой части интерфейса, просто щелкнув на ней мышью. Содержание справки зависит от того, какая часть интерфейса и в каком контексте выбрана. Например, справка по кнопке в диалоговом окне может отличаться от справки по аналогич­ной кнопке в главном окне приложения. Если для некоторой части интерфейса справки нет, то система должна показать информацию о ближайшем контексте, в котором она находится, например о диалоговом окне в целом.

Поэтому естественно было бы организовать справочную информацию от бо­лее конкретных разделов к более общим. Кроме того, ясно, что запрос на получе­ние справки обрабатывается одним из нескольких объектов пользовательского интерфейса, каким именно - зависит от контекста и имеющейся в наличии инфор­мации.

Проблема в том, что объект, инициирующий запрос (например, кнопка), не рас­полагает информацией о том, какой объект в конечном итоге предоставит справку. Нам необходим какой-то способ отделить кнопку-инициатор запроса от объектов, владеющих справочной информацией. Как этого добиться, показывает паттерн цепочка обязанностей.

Идея заключается в том, чтобы разорвать связь между отправителями и полу­чателями, дав возможность обработать запрос нескольким объектам. Запрос пе­ремещается по цепочке объектов, пока один из них не обработает его.

Первый объект в цепочке получает запрос и либо обрабатывает его сам, либо направляет следующему кандидату в цепочке, который ведет себя точно так же. У объекта, отправившего запрос, отсутствует информация об обработчике. Мы го­ворим, что у запроса есть анонимный получатель (implicit receiver).



Паттерны поведения

 


Предположим, что пользователь запрашивает справку по кнопке Print (пе­чать). Она находится в диалоговом окне Pr intDialog, содержащем информацию об объекте приложения, которому принадлежит (см. предыдущую диаграмму объектов). На представленной диаграмме взаимодействий показано, как запрос на получение справки перемещается по цепочке.

В данном случае ни кнопка aPrintButton, ни окно aPrintDialog не обра­батывают запрос, он достигает объекта anApplication, который может его об­работать или игнорировать. У клиента, инициировавшего запрос, нет прямой ссылки на объект, который его в конце концов выполнит.

Чтобы отправить запрос по цепочке и гарантировать анонимность получате­ля, все объекты в цепочке имеют единый интерфейс для обработки запросов и для доступа к своему преемнику (следующему объекту в цепочке). Например, в систе­ме оперативной справки можно было бы определить класс HelpHandler (предок классов всех объектов-кандидатов или подмешиваемый класс (mixin class)) с операцией HandleHelp. Тогда классы, которые будут обрабатывать запрос, смо­гут его передать своему родителю.

Для обработки запросов на получение справки классы Button, Dialog и Application пользуются операциями HelpHandler. По умолчанию операция HandleHelp просто перенаправляет запрос своему преемнику. В подклассах эта операция замещается, так что при благоприятных обстоятельствах может выда­ваться справочная информация. В противном случае запрос отправляется дальше посредством реализации по умолчанию.



Паттерн Chain of Responsibility

 




Дата добавления: 2015-09-11; просмотров: 73 | Поможем написать вашу работу | Нарушение авторских прав

Паттерн Flyweight | Структурные паттерны | Применимость | Реализация | Паттерн Flyweight | Структурные паттерны | Реализация | Паттерн Proxy | Адаптер и мост | Обсуждение структурных паттернов |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав