Порождающие

Отвечают за удобное и безопасное создание новых объектов или даже целых семейств объектов.

Фабричный метод

Определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов. Данный шаблон делегирует создание объектов наследникам родительского класса.

Паттерн Фабричный метод предлагает создавать объекты не напрямую, используя оператор new, а через вызов особого фабричного метода.

Аналогия

../../_images/11_.png
../../_images/11.png

Абстрактная фабрика

Позволяет создавать семейства связанных объектов, не привязываясь к конкретным классам создаваемых объектов.

Паттерн Абстрактная фабрика предлагает выделить общие интерфейсы для отдельных продуктов, составляющих семейства. Далее создается общий интерфейс, который содержит методы создания всех продуктов семейства.

Tip

Классы Абстрактной фабрики чаще всего реализуются с помощью Фабричного метода, хотя они могут быть построены и на основе Прототипа.

Аналогия

../../_images/12_.png
../../_images/12.png

Строитель (Builder)

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

Паттерн Строитель предлагает вынести конструирование объекта за пределы его собственного класса, поручив это дело отдельным объектам, называемым строителями (Builder).

Аналогия

../../_images/13_.png
../../_images/13.png

Прототип

Позволяет копировать объекты, не вдаваясь в подробности их реализации.

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

Аналогия

../../_images/14_.png
../../_images/14.png

Одиночка (Singleton)

Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.

Все реализации одиночки сводятся к тому, чтобы скрыть конструктор по умолчанию и создать публичный статический метод, который и будет контролировать жизненный цикл объекта-одиночки.

Аналогия

../../_images/15_.png
../../_images/15.png