Проектирование программных систем Хританков А. С. 2013 Проектирование программных систем
Применение паттернов-1 • Сборка графов объектов в контексте – Builder – контейнер, пример со сборкой приложения – Abstract Factory • Реализация интерфейсов сервисов – Façade – пример с реализацией сервиса – Как быть с ISP? • Добавление обязанностей классам – Наследование – Decorator – композиция во время выполнения Хританков А. С. 2013 Проектирование программных систем 2
Применение паттернов-2 • Удаленный вызов процедур – Использовать Proxy – трансляция форматов вызова, обработка ошибок, развитие – Invocation. Handler (Java) • Отделение вызывающего от вызываемого – Различия между Command и Strategy – параметризация командой или поведением – Mediator – реализация взаимодействия коллег – Single / Double dispatch – (+Visitor = US Patent) – Пример с командой Action – посредником вызова, и алгоритмом над контекстом Strategy – Pro’s & Con’s Visitor Double Dispatch Хританков А. С. 2013 Проектирование программных систем 3
Применение паттернов-3 • Сериализация графа объектов – Iterator – перечисление элементов коллекции – Visitor – пример с записью в Object. Output. Stream – Пример с Externalizable (Java), чтение ссылок на ресурсы, соединений с СУБД • Реализация схем состояний (самост? ) – – State – замена поведения при смене состояния Наследование // Boost statechart Таблица переходов // Boost msm Switch (multi-if) Хританков А. С. 2013 Проектирование программных систем 4
GRASP • Эвристики Лармана по RDD • Назначение обязанностей при проектировании – – – Information Expert (эксперт) Creator (создатель) Controller (контроллер) High cohesion (высокое сходство) Low coupling (низкая связность) Pure fabrication (выдумка) • Общие принципы – Indirection (посредничество) – Polymorphism (полиморфизм) – Protected variations (упрятывание) Хританков А. С. 2013 Проектирование программных систем 5
Другие паттерны (самост. ) • Паттерны проектирования – Go. F (Gamma, Helm, Johnson, Vlissides) – Enterprise App. Arch, M. Fowler – Анти-паттерны • Архитектурные паттерны – Тактики в ADD (см. Soft. Arch. In Practice 2 nd Ed) – Архитектурные паттерны Pattern-oriented software architecture – Интерфейсов взаимодействия (Greer) • • • Паттерны интеграции приложений (EIP) Паттерны анализа (Ambler) Паттерны представления информации (Tidwell) Паттерны процессов разработки (Ambler) Паттерны программирования – Паттерны обработки ошибок (c 2. com, MSDN) – Идиомы (C++, C) – e. g. Smart Pointers Хританков А. С. 2013 Проектирование программных систем 6
Литература • Книга Go. F. • Статья на c 2. com про Double. Dispatch и Double. Dispatch. Example (хабр не читать) • Книга Лармана, глава 17 (3 -я ред) • Дополнительно • См. сайт курса Хританков А. С. 2013 Проектирование программных систем 7