Повторное использование кода
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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, просмотров: 227.