пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


19. Шаблон Controller. Призначення


Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.

Рішення. Делегування обов'язків по обробці системних повідомлень класу, що задовольняє одній з наступних умов.

o   Клас представляє всю систему в цілому, пристрій або підсистему (зовнішній контроллер).

o   Клас представляє сценарій деякого прецеденту, в рамках якого виконується обробка всіх системних подій, і зазвичай називається <Прецедент>handler, <Прецедент>coordinator або <Прецедент>session (контроллер прецеденту або контроллер сеансу).

o   Для всіх системних подій в рамках одного сценарію прецеденту використовується один і той же клас-контроллер.

o   Неформальний, сеанс — це екземпляр взаємодії з виконавцем. Сеанси можуть мати довільну довжину, але зачастую організовані в рамках прецеденту (сеанси прецеденту).

o   Слідство. Відмітимо, що в цей перелік не включаються класи, що реалізовують вікно, аплет, додаток, вигляд і документ. Такі класи не виконують завдання, пов'язані з системними подіями. Вони зазвичай отримують повідомлення і делегують їх контроллерам.

           Проблема.

o   Хто повинен відповідати за обробку вхідних системних подій?

o   Зазвичай контроллер повинен лише делегувати функції іншим об'єктам і координувати їх діяльність, а не виконувати ці дії самостійно

Типи контроллерів

Зовнішній контроллер

?  представляє всю “систему”, пристрій або підсистему

?  забезпечує головну точку виклику всіх служб з інтерфейсу користувача і звернення до останніх шарів

Контроллер прецеденту

?  вводиться в тому випадку, якщо існуючий контроллер дуже “роздувається” при покладанні на нього додаткових обов'язків

Переваги

Поліпшення умов для повторного використання компонентів. Вживання цього шаблону забезпечує обробку процесів наочної області на рівні реалізації об'єктів, а не на рівні інтерфейсу. Обов'язки контроллера можуть бути технічно реалізовані в об'єктах інтерфейсу, проте в цьому випадку програмний код і логічні рішення, що відносяться до процесів наочної області, будуть жорстко пов'язаний з елементами інтерфейсу, наприклад з вікнами. При цьому знижується ефективність повторного використання компонентів в інших застосуваннях, оскільки процеси наочної області обмежені рамками інтерфейсу (наприклад, пов'язані з віконним об'єктом), що може виявитися неприйнятним в інших застосуваннях.

Контроль стану прецеденту. Інколи необхідно упевнитися, що системні операції виконуються в деякій певній послідовності. Наприклад, необхідно гарантувати, аби операція makepayment виконувалася лише після операції Endsale, для чого необхідно нагромаджувати інформацію про последовательності подій. Для цієї мети зручно використовувати контроллер, особливо контроллер прецеденту.

 


хиты: 576
рейтинг:0
Точные науки
информатика
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь