Page 39 - 4252
P. 39
об'єктно-орієнтованому контексті найбільш "чистою" формою моделі є об'-
єкт моделі предметної області. В якості моделі можна розглядати і сцена-
рій транзакції, якщо він не містить в собі ніякої логіки, пов'язаної з призна-
ченим для користувача інтерфейсом. Подібне визначення не дуже розши-
рює поняття моделі, однак повністю відповідає розподілу ролей у розгля-
нутому типовому рішенні.
Представлення відображає вміст моделі засобами графічного інтер-
фейсу. Таким чином, якщо модель - це об'єкт покупця, відповідне подання
може бути фреймом з купою елементів управління або HTML-сторінкою,
заповненою інформацією про покупця. Функції подання полягають тільки
у відображенні інформації на екрані. Всі зміни інформації обробляються
третім "учасником" системи - контролером. Контролер одержує вхідні дані
від користувача, виконує операції над моделлю і вказує подання на необ-
хідність відповідного оновлення. У цьому плані графічний інтерфейс мож-
на розглядати як сукупність подання та контролера.
Говорячи про типове рішення модель-подання-контролер, не можна не
підкреслити два основні типи поділу: відділення подання від моделі та від-
ділення контролера від подання.
Відділення подання від моделі - це один з фундаментальних принци-
пів проектування програмного забезпечення. Наявність такого поділу дуже
важливо з ряду причин:
• Представлення і модель відносяться до абсолютно різних сфер про-
грамування.
• Користувачі хочуть, щоб, залежно від ситуації, одна і та ж інформа-
ція могла бути відображена різними способами.
• Об'єкти, що не мають візуального інтерфейсу, набагато легше тесту-
вати, ніж об'єкти з інтерфейсом.
Ключовим моментом у відділенні подання від моделі є спрямування
залежностей: представлення залежить від моделі, але модель не залежить
від подання. Це означає, що зміна уявлення не вимагає зміни моделі.
Відділення контролера від подання. Класичним прикладом необхідно-
сті такого поділу є підтримка редагованої і не редагованої поведінки. Цьо-
го можна досягти за наявності одного подання і двох контролерів (для двох
варіантів використання), де контролери є стратегіями, використовуваними
поданням. Тим часом на практиці в більшості систем кожному поданню
відповідає тільки один контролер, тому поділ між ними не проводиться.
Про це рішення згадали тільки з появою Web-інтерфейсів, де відділення
контролера від подання виявилося надзвичайно корисним.
38