Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции Java / 13. Введение в паттерны проектирования.pptx

.pdf
Скачиваний:
161
Добавлен:
16.03.2015
Размер:
1.01 Mб
Скачать

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

Лекция 13

Введение в паттерны проектирования

© Составление, Гаврилов А.В., 2013

Самара

2013

План лекции

nПовторное использование кода

nПаттерны проектирования

nПорождающие паттерны

Singleton

Factory Method

n Структурные паттерны

Adapter

Decorator

Proxy

n Паттерны поведения

Iterator

Observer

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

2

Повторное использование кода

nИспользование кода существующих приложений для создания новых приложений

nПринципы создания хорошего повторно используемого кода

Модульность (modularity)

Слабая связность (low coupling)

Высокая сфокусированность (high cohesion)

Сокрытие информации (information hiding)

Разделение ответственности (separation of concerns)

n Примеры повторного использования

«Копипаста» (copy-and-paste)

Библиотеки (software libraries)

Паттерны проектирования (design patterns)

Фреймворки (software frameworks)

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

3

Механизмы повторного использования в ООП

n Наследование

Повторное использование родительского типа и/или реализации Определяется статически

Нарушает инкапсуляцию

n Композиция

Повторное использование кода используемых классов Определяется динамически

Решение представляет собой совокупность взаимодействующих объектов и может быть изменено путём замены объекта

n Шаблоны

Повторное использование реализации с частичным нарушением типа

Определяется статически

Типы и объекты требуют спецификации типов-параметров

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

4

Делегирование

nОдин объект в части своей реализации полагается на другой объект

Средство обеспечения композиции

Программа становится тяжелее для понимания

nПри написании кода предпочитайте композицию наследованию класса

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

5

Рекомендации по написанию повторно-используемого кода

nПрограммируйте в соответствии с интерфейсом, а не реализацией

nНе объявляйте переменные как экземпляры конкретных классов. Вместо этого придерживайтесь интерфейса, определенного абстрактным типом

nСоздавая в системе объекты конкретных классов, используйте порождающие паттерны проектирования

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

6

Причины перепроектирования

nПри создании объекта явно указывается класс

nЗависимость от конкретных операций

nЗависимость от аппаратной и программной платформ

nЗависимость от представления или реализации объекта

nЗависимость от алгоритмов

nСильная связанность

nРасширение функциональности за счет порождения подклассов

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

7

Фреймворки

nФреймворк (Framework, каркас) – это набор взаимодействующих классов, составляющих повторно используемое проектное решение для конкретного класса программ

nДиктует определенную структуру приложения или модуля

nОпределяет общую структуру, ее разделение на классы и объекты, основные функции тех и других, методы взаимодействия потоков и классов, потоки управления

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

8

Паттерны проектирования

nПаттерн проектирования (Design Pattern, образец проектирования, шаблон проектирования) – описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте

nПаттерн проектирования именует, абстрагирует и идентифицирует ключевые аспекты структуры общего решения, которые и позволяют применить его для создания повторно используемого проектного решения

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

9

Паттерны в ООП

nРезультат проектирования на уровне ООП

– распределение ответственностей и активностей по классам

nПаттерн – именованная конфигурация распределения ответственности по классам

Самарский государственный аэрокосмический университет имени академика С.П. Королёва

10