Если говорить кратко, то шаблонами (или паттернами, тут кому как удобнее) проектирования называются повторяемые архитектурные конструкции, которые являются решением некоторой популярной проблемы.
Тем не менее, ни один из шаблонов не является готовым решением "на блюдечке". Это не фрагменты кода, не библиотеки и даже не отдельные классы. Стоит рассматривать шаблоны проектирования, скорее, как набор качественно работающих методик, которые стоит модифицировать, исходя из своего проекта.
Делятся паттерны проектирования на три большие группы. Это:
- Порождающие
- Поведенческие
- Структурные
Будем последовательны, и в этом посте поговорим о первом типе, а именно о порождающих шаблонах.
К ним относятся шаблоны, благодаря которым ваша система окажется вне зависимости от способа её создания.
Шаблон, который порождает классы, прибегает к наследованию, а шаблон, создающий новые объекты, делегирует их инстанцирование уже новому другому объекту.
Кратко пробежимся по каждому из типов порождающих шаблонов.
✔ Фабрика — это некий мастер-объект, предназначение которого состоит в производстве других объектов. Помогает существенно уменьшить количество самокопирования в коде за счет делегирования фабрике функции создания типовых объектов.
✔ Фабричный метод предполагает передачу логики создания экземпляров своим дочерним классам. Пригодится, когда требуется во время общей обработки динамически определять необходимый подкласс.
✔ Абстрактная фабрика — это шаблон, предназначенный для создания зависимых друг от друга или же связанных объектов. При этом их конкретные классы не специфицируются. Если сказать проще, то это "фабрика фабрик".
✔ Строитель (builder) позволяет создавать разные модификации объекта, избегая "замусоривания" конструктора. Используйте конструктор, если процесс создания объекта состоит из множества шагов или может варьироваться в зависимости от обстоятельств.
✔ Прототип путем клонирования создает новый объект, основанный на текущем, но обладающий дополнительными качествами. То есть вместо полностью нового объекта с некоторыми изменениями копируется существующий.
✔ Синглтон призван обеспечить существование экземпляра класса в единственном числе и предоставить единую точку доступа к нему. Следует избегать излишнего количества синглтонов, чтобы избежать чрезмерной связанности в коде.
В следующей публикации мы продолжим тему паттернов проектирования — оставайтесь на связи!
Понравилась статья? Тогда ставьте лайк и подписывайтесь на канал, чтобы не пропускать новые выпуски!