Skip to main content

Порождающие шаблоны

Порождающие шаблоны описывают способы создания объектов так, чтобы система оставалась гибкой и не зависела от конкретных реализаций.

Если создавать объекты напрямую через new в разных частях кода, архитектура быстро становится жесткой: сложно заменять реализации, тестировать и масштабировать решения. Порождающие шаблоны решают эту проблему, инкапсулируя логику создания.

Какие шаблоны входят в группу

  • Абстрактная фабрика: создает семейства связанных объектов.
  • Строитель: отделяет процесс создания сложного объекта от его представления.
  • Фабричный метод: делегирует создание подклассам.
  • Пул объектов: переиспользует объекты вместо постоянного создания и удаления.
  • Прототип: создает объекты через клонирование готового экземпляра.
  • Одиночка: гарантирует существование только одного экземпляра класса.

Когда использовать порождающие шаблоны

  • Когда код должен работать с интерфейсами, а не с конкретными классами.
  • Когда нужно создавать разные семейства объектов (например, для разных платформ или окружений).
  • Когда важны контроль жизненного цикла объектов и переиспользование ресурсов.
  • Когда логика создания сложная и ее лучше вынести из бизнес-логики.

Практические ориентиры

  1. Шаблоны этой группы могут как конкурировать, так и дополнять друг друга в одной системе.
  2. Abstract Factory, Builder и Prototype используют объект, отвечающий за создание продуктов, но делают это по-разному.
  3. Abstract Factory часто строится поверх Factory Method, но может опираться и на Prototype.
  4. Builder фокусируется на пошаговой сборке сложного объекта, тогда как Abstract Factory - на создании семейства совместимых объектов.
  5. Factory Method обычно связан с наследованием, Prototype - с делегированием и копированием.
  6. Системы с большим количеством Composite и Decorator часто выигрывают от использования Prototype.

Источник

Материал страницы основан на обзоре SourceMaking: