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