Контролер аплікації () — шаблон проєктування, який дозволяє керувати порядком роботи аплікації залежно від стану.
Опис
Контролери сторінки відповідають за представлення сторінки користувачеві. При збільшені складності логіки аплікації вибір представлення дублюється в різних контролерах. Якщо логіка вибору представлення проста (інакше кажучи, якщо користувач може відкривати сторінки у довільному порядку), контролери сторінок являються самодостатніми, та не потребують змін. У випадку коли порядок відображення сторінок має значення в залежності від стану об'єкта, варто змінювати логіку.
Щоб запобігти повторам, необхідно винести логіку керування потоком виконання аплікації в окремий клас. В такому випадку контролери сторінок запитують контролери аплікації за операції, які варто виконати над моделлю та за представлення, яке необхідно відобразити користувачу.
Реалізація
Змоделюємо доменну область електронних черг. Нехай необхідно забронювати час на прийом до лікаря. Тоді потік виконання програми можна описати наступними кроками
Бронювання часу
При спробі забронювати час можливий перехід в один із наступних станів: Стан помилки. На даний момент немає доступний вільних місць, час забронювати не вдалось. Підтвердження бронювання. Вільні місця є, час забронювати можна, необхідне підтвердження.
Підтвердження бронювання
Стан при якому користувач отримує повідомлення із кодом підтвердження.
При підтверджені бронювання можливий перехід в один із наступних станів: Стан помилки. Введений код не вірний. Час заброньовано. Введений код вірний, бронювання підтверджено та створено.
Опишемо операції над моделлю предметної області у вигляді команд.
Тоді контролери матимуть наступний вигляд:
Див. також Скінченний автомат Стан (шаблон проєктування) Команда (шаблон проєктування) Контролер сторінки (шаблон проєктування)
Джерела Application Controller