Фабрика (Factory Method) — порождающий паттерн, который определяет интерфейс для создания объектов, но позволяет подклассам решать, какой класс инстанцировать.
Основные компоненты:
- Продукт (Product): Интерфейс или абстрактный класс, определяющий тип объектов, создаваемых фабричным методом.
- Конкретный Продукт (Concrete Product): Конкретная реализация Продукта.
- Создатель (Creator): Класс, объявляющий фабричный метод, возвращающий объект типа Продукт. Он может содержать реализацию по умолчанию для этого метода или оставить его абстрактным.
- Конкретный Создатель (Concrete Creator): Подкласс Создателя, переопределяющий фабричный метод для создания конкретных Конкретных Продуктов.
Преимущества:
- Гибкость: Позволяет добавлять новые типы продуктов без изменения кода клиента, использующего фабрику.
- Слабая связанность: Отделяет код создания объекта от кода его использования.
- Простота расширения: Добавление нового продукта требует создания нового Конкретного Продукта и Конкретного Создателя.
Пример реализации на Go:
go