
Лекции Java / 13. Введение в паттерны проектирования.pptx
.pdf
Самарский государственный аэрокосмический университет имени академика С.П. Королёва
Лекция 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 |