Порождающие паттерны проектирования — это шаблоны, которые абстрагируют процесс инстанцирования, делая систему независимой от того, как и когда создаются объекты.
Основные порождающие паттерны:
- Абстрактная фабрика (Abstract Factory): Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретные классы.
- Строитель (Builder): Разделяет конструирование сложного объекта от его представления, так что один и тот же процесс конструирования может создавать различные представления.
- Фабричный метод (Factory Method): Определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс инстанцировать. Фабричный метод позволяет классу делегировать инстанцирование подклассам.
- Прототип (Prototype): Задает виды создаваемых объектов при помощи экземпляра-прототипа и создает новые объекты путем копирования этого прототипа.
- Одиночка (Singleton): Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
Примеры использования:
- Абстрактная фабрика может использоваться для создания наборов UI-элементов для разных операционных систем (например, iOS и Android).
- Строитель полезен при создании сложных объектов с множеством опций конфигурирования, например, URLRequest или конфигурация сети.
- Фабричный метод часто применяется в фреймворках для создания представлений или контроллеров на основе их строковых идентификаторов.
- Прототип позволяет эффективно создавать новые объекты на основе уже существующих, например, при клонировании экземпляров.
- Одиночка используется для менеджеров, таких как
URLSession.shared или UserDefaults.standard.
Эти паттерны повышают гибкость, повторное использование и тестируемость кода, скрывая детали создания объектов.