Творческий шаблон
В обеспечения разработке программного шаблоны творческого проектирования — это шаблоны проектирования , которые связаны с механизмами создания объектов и пытаются создавать объекты способом, подходящим для конкретной ситуации. Базовая форма создания объекта может привести к проблемам с проектированием или к увеличению сложности проекта из-за негибкости процедур создания. Шаблоны творческого проектирования решают эту проблему, каким-то образом управляя созданием объекта.
Обзор
[ редактировать ]Шаблоны творческого проектирования состоят из двух доминирующих идей. Один из них — это инкапсуляция знаний о том, какие конкретные классы использует система. Другой — скрыть, как экземпляры этих конкретных классов. создаются и комбинируются [1]
Шаблоны творческого проектирования подразделяются на шаблоны создания объектов и шаблоны создания классов, где шаблоны создания объектов связаны с созданием объектов, а шаблоны создания классов — с созданием экземпляров классов. Более подробно, шаблоны создания объектов перекладывают часть создания объекта на другой объект, тогда как шаблоны создания классов откладывают создание объекта на подклассы. [2]
Пять широко известных шаблонов проектирования, которые являются частями творческих шаблонов:
- абстрактный шаблон фабрики , который предоставляет интерфейс для создания связанных или зависимых объектов без указания конкретных классов объектов. [3]
- шаблон строителя , который отделяет построение сложного объекта от его представления, так что один и тот же процесс построения может создавать разные представления.
- Шаблон фабричного метода , который позволяет классу отложить создание экземпляра до подклассов. [4]
- Шаблон прототипа , который определяет тип объекта, который необходимо создать с использованием экземпляра прототипа, и создает новые объекты путем клонирования этого прототипа.
- шаблон Singleton , который гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к нему. [5]
Определение
[ редактировать ]Создающие шаблоны направлены на то, чтобы отделить систему от того, как ее объекты создаются, составляются и представляются. Они повышают гибкость системы в отношении того, что, кто, как и когда создает объекты. [6]
Использование
[ редактировать ]Поскольку современная разработка программного обеспечения больше зависит от композиции объектов , чем от наследования классов, акцент смещается от жесткого кодирования поведения к определению меньшего набора базовых поведений, которые можно объединить в более сложные. [7] Поведения жесткого кодирования негибкие, поскольку требуют переопределения или повторной реализации всего этого, чтобы изменить части дизайна. Кроме того, жесткое кодирование не способствует повторному использованию и затрудняет отслеживание ошибок. По этим причинам творческие шаблоны более полезны, чем жестко запрограммированные модели поведения. Шаблоны создания делают дизайн более гибким. Они предоставляют различные способы удаления явных ссылок в конкретных классах из кода, который должен их создать. [8] Другими словами, они создают независимость объектов и классов.
Рассмотрите возможность применения творческих шаблонов, когда:
- Система должна быть независимой от того, как создаются ее объекты и продукты.
- Набор связанных объектов предназначен для совместного использования.
- Скрытие реализаций библиотеки классов или продукта, отображение только их интерфейсов.
- Построение различных представлений независимых сложных объектов.
- Класс хочет, чтобы его подкласс реализовал создаваемый им объект.
- Экземпляры классов указываются во время выполнения.
- Должен быть один экземпляр, и клиент может получить доступ к этому экземпляру в любое время.
- Экземпляр должен быть расширяемым без изменений.
Структура
[ редактировать ]
Ниже представлена простая диаграмма классов, общая для большинства шаблонов создания. Обратите внимание, что разные творческие модели требуют дополнительных и разных участвующих классов.
Участники :
- Создатель : объявляет интерфейс объекта. Возвращает объект.
- ConcreteCreator : реализует интерфейс объекта.
Примеры
[ редактировать ]Некоторые примеры творческих шаблонов проектирования включают в себя:
- Шаблон «Абстрактная фабрика» : класс запрашивает необходимые ему объекты из объекта фабрики вместо того, чтобы создавать объекты напрямую.
- Шаблон фабричного метода : централизуйте создание объекта определенного типа, выбрав одну из нескольких реализаций.
- Шаблон Builder : отделите построение сложного объекта от его представления, чтобы один и тот же процесс построения мог создавать разные представления.
- Шаблон внедрения зависимостей : класс принимает необходимые ему объекты из инжектора вместо того, чтобы создавать объекты напрямую.
- Шаблон ленивой инициализации : тактика задержки создания объекта, вычисления значения или другого дорогостоящего процесса до тех пор, пока он не понадобится в первый раз.
- Шаблон пула объектов : избегайте дорогостоящего приобретения и высвобождения ресурсов путем переработки объектов, которые больше не используются.
- Шаблон прототипа : используется, когда тип создаваемых объектов определяется экземпляром прототипа, который клонируется для создания новых объектов.
- Шаблон Singleton : ограничить создание экземпляра класса одним объектом.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Гамма, Эрих; Хелм, Ричард; Джонсон, Ральф; Влиссидес, Джон (1995). Шаблоны проектирования . Массачусетс: Аддисон-Уэсли. п. 81 . ISBN 978-0-201-63361-0 . Проверено 22 мая 2015 г.
- ^ Гамма, Эрих; Хелм, Ричард; Джонсон, Ральф; Влиссидес, Джон (1995). Шаблоны проектирования . Массачусетс: Аддисон-Уэсли. ISBN 978-0-201-63361-0 . Проверено 22 мая 2015 г.
- ^ Фриман, Эрик; Фриман, Элизабет; Сьерра, Кэти; Бейтс, Берт (2004). Хендриксон, Майк; Лукидес, Майк (ред.). Шаблоны проектирования Head First . Калифорния: О'Рейли Медиа. п. 156. ИСБН 978-0-596-00712-6 . Проверено 22 мая 2015 г.
- ^ Фриман, Эрик; Фриман, Элизабет; Сьерра, Кэти; Бейтс, Берт (2004). Хендриксон, Майк; Лукидес, Майк (ред.). Шаблоны проектирования «в первую очередь» . Калифорния: О'Рейли Медиа. п. 134. ИСБН 978-0-596-00712-6 . Проверено 22 мая 2015 г.
- ^ Фриман, Эрик; Фриман, Элизабет; Сьерра, Кэти; Бейтс, Берт (2004). Хендриксон, Майк; Лукидес, Майк (ред.). Шаблоны проектирования Head First . Калифорния: О'Рейли Медиа. п. 177. ИСБН 978-0-596-00712-6 . Проверено 22 мая 2015 г.
- ^ Джудит, епископ (2007). Шаблоны проектирования C# 3.0 . Калифорния: О'Рейли Медиа. п. 336 . ISBN 978-0-596-52773-0 . Проверено 22 мая 2015 г.
- ^ Гамма, Эрих; Хелм, Ричард; Джонсон, Ральф; Влиссидес, Джон (1995). Шаблоны проектирования . Массачусетс: Аддисон-Уэсли. п. 84 . ISBN 978-0-201-63361-0 . Проверено 22 мая 2015 г.
- ^ Гамма, Эрих; Хелм, Ричард; Джонсон, Ральф; Влиссидес, Джон (1995). Шаблоны проектирования . Массачусетс: Аддисон-Уэсли. п. 85 . ISBN 978-0-201-63361-0 . Проверено 22 мая 2015 г.