n Использование кода существующих приложений для создания новых приложений
n Принципы создания хорошего повторно используемого кода
l Модульность (modularity)
l Слабая связность (low coupling)
l Высокая сфокусированность (high cohesion)
l Сокрытие информации (information hiding)
l Разделение ответственности (separation of concerns)
n Примеры повторного использования
l «Копипаста» (copy-and-paste)
l Библиотеки (software libraries)
l Паттерны проектирования (design patterns)
l Фреймворки (software frameworks)
Механизмы повторного использования в ООП
n Наследование
l Повторное использование родительского типа и/или реализации
l Определяется статически
l Нарушает инкапсуляцию
n Композиция
l Повторное использование кода используемых классов
l Определяется динамически
l Решение представляет собой совокупность взаимодействующих объектов и может быть изменено путём замены объекта
n Шаблоны
l Повторное использование реализации с частичным нарушением типа
l Определяется статически
l Типы и объекты требуют спецификации типов-параметров
Делегирование
n Один объект в части
своей реализации полагается
на другой объект
l Средство обеспечения композиции
l Программа становится тяжелее для понимания
n При написании кода предпочитайте композицию наследованию класса
Рекомендации по написанию повторно-используемого кода
n Программируйте в соответствии с интерфейсом, а не реализацией
n Не объявляйте переменные как экземпляры конкретных классов. Вместо этого придерживайтесь интерфейса, определенного абстрактным типом
n Создавая в системе объекты конкретных классов, используйте порождающие паттерны проектирования
Причины перепроектирования
n При создании объекта явно указывается класс
n Зависимость от конкретных операций
n Зависимость от аппаратной и программной платформ
n Зависимость от представления или реализации объекта
n Зависимость от алгоритмов
n Сильная связанность
n Расширение функциональности за счет порождения подклассов
Вопрос 94 Паттерны и фреймворки. 7-11 Лекция Введение в паттерны проектирования.
Фреймворки
n Фреймворк ( Framework , каркас) – это набор взаимодействующих классов, составляющих повторно используемое проектное решение для конкретного класса программ
n Диктует определенную структуру приложения или модуля
n Определяет общую структуру, ее разделение на классы и объекты, основные функции тех и других, методы взаимодействия потоков и классов, потоки управления
Паттерны проектирования
n Паттерн проектирования ( Design Pattern , образец проектирования, шаблон проектирования) – описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте
n Паттерн проектирования именует, абстрагирует и идентифицирует ключевые аспекты структуры общего решения, которые и позволяют применить его для создания повторно используемого проектного решения
Паттерны в ООП
n Результат проектирования на уровне ООП – распределение ответственностей и активностей по классам
n Паттерн – именованная конфигурация распределения ответственности по классам
Фреймворки vs Паттерны
n Паттерны проектирования более абстрактны, чем фреймворки
n Как архитектурные элементы паттерны проектирования мельче, чем фреймворки
n Паттерны проектирования менее специализированны, чем фреймворки
Описания паттернов
n GoF
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software
n POSA1
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad (1996). Pattern-Oriented Software Architecture, Volume 1: A System of Patterns
n POSA2
Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann (2000). Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects
n PoEAA
Martin Fowler (2002). Patterns of Enterprise Application Architecture
n …
Вопрос 95 Порождающие паттерны. Паттерн одиночка (Singleton). 12-14 Лекция Введение в паттерны проектирования.
Порождающие паттерны
n Abstract Factory – Абстрактная фабрика
n Builder – Строитель
n Factory Method – Фабричный метод
n Prototype – Прототип
n Singleton – Одиночка
Singleton
n Название и классификация
Одиночка – паттерн, порождающий объекты
n Назначение
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа
n Применимость
l Должен быть ровно один экземпляр некоторого класса, легко доступный всем клиентам
l Единственный экземпляр должен расширяться путем порождения подклассов, и клиентам нужно иметь возможность работать с расширенным экземпляром без модификации своего кода
Singleton : структура
n Структура
n Участники
l Singleton – одиночка, Определяет операцию Instance , которая позволяет клиентам получать доступ к единственному экземпляру
Вопрос 96 Порождающие паттерны. Паттерн фабричный метод (Factory method) 15-19 Лекция Введение в паттерны проектирования.
Factory Method
n Название и классификация
Фабричный метод – паттерн, порождающий объекты
n Назначение
Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать. Фабричный метод позволяет классу делегировать инстанцирование в подклассы
n Известен также под именем
Virtual Constructor
Factory Method Мотивация
Factory Method Применимость
Используйте паттерн фабричный метод, когда:
n классу заранее неизвестно, объекты каких классов ему нужно создавать
n класс спроектирован так, чтобы объекты, которые он создает, специфицировались подклассами
n класс делегирует свои обязанности одному из нескольких вспомогательных подклассов, и вы планируете локализовать знание о том, какой класс принимает эти обязанности на себя
Factory Method Структура
Factory Method Особенности
n Две основных
разновидности:
l класс Сгeator – абстрактный
l Creator – конкретный класс, в котором по умолчанию есть реализация фабричного метода
n Параметризованные фабричные методы
Дата: 2019-07-30, просмотров: 273.