
- •Самарский государственный аэрокосмический университет имени академика С.П. Королёва
- •План лекции
- •Повторное использование
- •МеханизмыНаследование повторного
- •Делегирование
- •Рекомендации по написанию
- •Причины перепроектирования
- •Фреймворки
- •Паттерны проектирования
- •Паттерны в ООП
- •Фреймворки vs Паттерны
- •GoFОписания паттернов
- •Порождающие паттерны
- •Singleton
- •Singleton: структура
- •Factory Method
- •Factory Method
- •Factory Method
- •Factory Method
- •Factory Method
- •Структурные паттерны
- •Adapter
- •Adapter
- •Adapter (класса)
- •Adapter (объекта)
- •Decorator
- •Decorator
- •Decorator
- •Decorator
- •Decorator
- •Decorator
- •Proxy
- •Proxy
- •Proxy
- •Proxy
- •Proxy
- •Паттерны поведения
- •Паттерны поведения
- •Iterator
- •Iterator
- •Iterator
- •Iterator
- •Iterator
- •Observer
- •Observer
- •Observer
- •Observer
- •Observer
- •Observer
- •Спасибо за внимание!
- •Дополнительные источники

Самарский государственный аэрокосмический университет имени академика С.П. Королёва
Лекция 13
Введение в паттерны проектирования
© Составление, Гаврилов А.В., 2013
Самара
2013
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

План лекции
Повторное использование кодаПаттерны проектированияПорождающие паттерны
SingletonFactory Method
Структурные паттерны
AdapterDecoratorProxy
Паттерны поведения
IteratorObserver
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Повторное использование
Использование кода существующих кодаприложений для создания новых приложенийПринципы создания хорошего повторно используемого кода
Модульность (modularity)Слабая связность (low coupling)
Высокая сфокусированность (high cohesion)Сокрытие информации (information hiding)Разделение ответственности (separation of
concerns)
Примеры повторного использования
«Копипаста» (copy-and-paste)
Библиотеки (software libraries)
Самарский государственный аэрокосмический университет имени академика С.П. Королёва
Паттерны проектирования (design patterns)

МеханизмыНаследование повторного
Повторное использование родительского типа
использованияи/или реализации в ООП
Определяется статическиНарушает инкапсуляцию
Композиция
Повторное использование кода используемых классов
Определяется динамическиРешение представляет собой совокупность
взаимодействующих объектов и может быть изменено путём замены объекта
Шаблоны
Повторное использование реализации с частичным нарушением типа
ОпределяетсяСамарский государств нный аэрокосмическстатический унив р итет мени академика С.П. Королёва

Делегирование
Один объект в части своей реализации полагается на другой объект
Средство обеспечения композиции |
|
Программа |
понимания |
При написании |
композицию |
наследованию класса |
|
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Рекомендации по написанию
повторно-используемого кода
Программируйте в соответствии с интерфейсом, а не реализацией
Не объявляйте переменные как экземпляры конкретных классов. Вместо этого придерживайтесь интерфейса, определенного абстрактным типом
Создавая в системе объекты конкретных классов, используйте порождающие паттерны проектирования
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Причины перепроектирования
При создании объекта явно указывается классЗависимость от конкретных операцийЗависимость от аппаратной и программной
платформЗависимость от представления или реализации
объектаЗависимость от алгоритмовСильная связанность
Расширение функциональности за счет порождения подклассов
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Фреймворки
Фреймворк (Framework, каркас) – это набор взаимодействующих классов, составляющих повторно используемое проектное решение для конкретного класса программ
Диктует определенную структуру приложения или модуля
Определяет общую структуру, ее разделение на классы и объекты, основные функции тех и других, методы взаимодействия потоков и классов, потоки управления
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Паттерны проектирования
Паттерн проектирования (Design Pattern,
образец проектирования, шаблон проектирования) – описание взаимодействия
объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте
Паттерн проектирования именует, абстрагирует и идентифицирует ключевые аспекты структуры общего решения, которые и позволяют применить его для создания повторно используемого проектного решения
Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Паттерны в ООП
Результат проектирования на уровне ООП
– распределение ответственностей и активностей по классамПаттерн – именованная конфигурация
распределения ответственности по классам
Самарский государственный аэрокосмический университет имени академика С.П. Королёва