Фабричный метод, абстрактная фабрика, строитель, прототип.
Фабричный метод
Фабричный метод (виртуальный конструктор, factory method) — это порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
Зачем?
Отделяет код производства объектов от остального кода, который эти объекты использует.
Позволяет расширять классы вашего фреймворка через наследование путем переопределения метода, создающего объекты.
Позволяет экономить системные ресурсы путем повторного использования уже созданных объектов вместо порождения новых.
Плюсы:
1. Избавляет главный класс от привязки к конкретным типам объектов.
2. Выделяет код производства объектов в одно место, упрощая поддержку кода.
3. Упрощает добавление новых типов объектов в программу.
4. Реализует принцип открытости/закрытости.
Минусы:
1. Может привести к созданию больших параллельных иерархий классов, так как для ка