Примеры: стандартная система связи открытых систем (Open System Interconnection), архитектура современных информационных систем или систем автоматизации бизнеса; она содержит четыре уровня, а именно: интерфейс взаимодействия с внешней средой, бизнес-логика, предметная область и уровень управления ресурсами. MVC (Модель-Вид-Контроллер) Назначение: когда различные пользователи имеют различные наборы требований, методы же обработки данных изменяются в меньшей степени. В таких случаях визуальное представление управляющих элементов может меняться вместе с интерфейсом, а сами выполняемые действия зависят от бизнес-логики. и предметной области и поэтому более устойчивы. Наиболее подлежит изменениям модель данных, поэтому для увеличения гибкости и удобства изменений в таких приложениях необходимо соответствующим образом выделить компоненты. Решение: первый набор: данные, модель данных или просто модель (model): соответствует структуре данных предметной области, в которой работает приложение; обязанности этих компонентов представляют в системе данные и базовые операции над ними. Второй набор: представление (view): соответствует различным способам представления данных в интерфейсе пользователя, при этом для одних данных может быть несколько представлений; каждому компоненту представления в соответствие ставится компонент из третьего набора: обработчик (controller) - компонент, который осуществляет обработку действий пользователя. Такой компонент получает команды и превращает их в действия над данными. В результате каждого действия нужно обновить все представления всех данных, которые подверглись изменениям. Структура: +-----------------+ +Observer +-------------+ |Model +-------------->|Subscriber | +-----------------+ +-------------+ |+data | +-------------+<|-----------+ +-----------------+ +-------|>|+update | | |-attack(Observer)| | +-------------+ | |-detach(Observer)| +-------------------+ +----------------+--------+ |+notify | |View | |Controller | |+getData() |<--+-------------------+ +-------------------------+ +-----------------+ +-------------------+ +-------------------------+ ^ |+Initialize(Model) | |+Initialize(ModelView) | | |+makeController() +--++HandleEvent() | | |+activate() | |+update | | |+display() | +----------------+--------+ | |+active() | | | +-------------------+ | | | +-----------------------------------------------------+ Компонент-модель моделирует данные приложения, реализует основные операции над ними и возможность регистрировать зависимые от него обработчики (Subscriber) и представления. При изменениях данных модель оповещает о них все зарегистрированные компоненты. Инициализация компонентов: +-------------+ +-------------+ +---------------+ +--------------+ |_programm_ | |_:Model_ | |_:View_ | |_:Controller_ | +-------------+ +-------------+ +---------------+ +--------------+ : create() : : : ++----------------->++ : : || create() ++ : : |+------------------------------------>++ : || initialize() : || : |+------------------------------------->++ : || : attach() ||| : || ++<----------------+++---+ : || || ||| |makeLoad() : || ++ ||++<-+ create() : || : |||+-------------->++ || : ||++ initialize() || || : |+----------------->++ || ; attach() ||| |++ || ++<----------------+++----------------++ || || || : ++ ++ ++ : : : : : Сценарий обработки определённого действия пользователя с изменения данных и обновления соответствующих им представлений обработчика. +-------------+ +------------+ +-----------+ |_:Controller_| |_:Model_ | |_:View_ | +-----+-------+ +-----+------+ +-----+-----+ handle: : : Event(:changeData() : : ----->++-------------->++ : || |+--+ : || || |notify() : || |++<+ update(): || ||+------------>++ || ||| getData() || || ||++<-----------+| || ||++ |+---+ || ||| || |display() || update() ||| |++<-+ |++<-------------+|| |++ ||| getData() ||| ++ ||+--------------->++ : |++ ||++ : ++ |++ : : ++ : : : : Примеры: архитектура современных web-приложений, т. е. бизнес-приложений с пользовательским интерфейсом на основе HTML и связи между отдельными элементами, построенными на базе основных протоколов Internet. В ней роль модели играют компоненты, реализующие бизнес-логику и хранение данных, а роль представлений и обработчиков выполняется HTML-страницами и HTML-формами, которые могут генерироваться статически или динамически.