Паттерны в разработке приложений. Порождающие паттерны
Published 22 января 2021 г. 20:25
Итак, сегодня мы начнём разбирать группы паттернов более детально и начнём с порождающих паттернов. Цель их применения в разработке - абстрагирование порождения классов и объектов.
Данная группа шаблонов довольно немногочисленна и вот список наших созидательных товарищей:
- Фабричный метод (Factory method)
- Абстрактная фабрика (Abstract factory)
- Строитель (Builder)
- Одиночка (Singlton)
- Прототип (Prototype)
Фабричный метод
Начнем с фабричного метода. Важно понять, что абстрактная фабрика и фабричный метод хоть и имеют нечто общее в названиях, однако предназначены они для различных целей. Фабричный метод используется для порождения классов, а абстрактная фабрика - для создания объектов. Суть фабричного метода заключается в следующем:
Реализовать интерфейс для создания объекта, но делегировать подклассам решение, какой класс необходимо создать.
Вот один из ресурсов на русском и ещё на английском в которых подробно описаны случаи применения паттерна с примерами кода.
Абстрактная фабрика
Переходим к абстрактной фабрике. Данный шаблон позволяет создавать семейства связных объектов, не привязываясь к классам конкретных объектов. По сути, это, как верно подмечено в этой статье фабрика фабрик. Кстати, указанная статья содержит пример с кодом, поэтому настоятельно рекомендуема к прочтению :-).
Строитель
Следующий паттерн, позволяющий создавать сложные объекты - Строитель. Данный шаблон применяется при создании сложных объектов, состоящих из нескольких частей. С его помощью можно разделить создание объекта на несколько частей, что позволяет создавать сложные объекты, не используя огромный список параметров. Здесь можно пример с заказом бутерброда (саба) в Subway. Есть какая-то основа (булочка), на неё кладут различные продукты (сыр, бекон, салат и т д.) по вашему выбору. В итоге мы получаем наш вкусный саб, в процессе создания которого мы сами выбирали его элементы. Здесь также есть материалы по данному шаблону с примерами кода.
Одиночка (Singlton)
Наш следующий гость - Одиночка. Название данного шаблона говорит само за себя. Он позволяет создать единственный экземпляр класса и гарантирует, что в процессе работы программы он таковым и останется (как бы грустно это не звучало).
Этот ресурс предлагает очень подробное разъяснение использования данного паттерна. Возникает вопрос, зачем нам использовать этот шаблон. Он очень полезен при многопоточности программ, а также в случаях, когда вам необходим контроль за глобальными переменными.
Прототип
Представьте, что вам нужно создать армию клонов (приветствую фанатов Звездных Войн :-)), но вы не хотите знать подробности создания каждого из них. В этом случае вам пригодится шаблон Прототип. Он позволит вам создавать копии объектов, не вдаваясь в подробности их реализации.
Этот популярный ресурс подробно рассматривает реализацию и примеры применения шаблона с исходным кодом. И ещё один ресурс для закрепления.
Итак, сегодня мы познакомились с порождающими паттернами, узнали, в каких случая возможно их применение и ознакомились с реализацией данных шаблонов в коде. В следующих публикациях будут разобраны структурные и поведенческие паттерны. Попробуйте использовать эти паттерны в своих программах и оцените, как изменились гибкость и расширяемость ваших творений :-).
Похожие публикации
Паттерны в разработке приложений
Паттерны в разработке приложений. Поведенческие паттерны. Часть 2.
Паттерны в разработке приложений. Поведенческие паттерны. Часть 1.