Создатель экземпляров класса (Creator) - GRASP
Проблема | "Кто" должен отвечать за создание экземпляров класса. | |
Решение | Назначить классу В обязанность создавать объекты другого класса А | |
Рекомендации | Логично использовать паттерн если класс В содержит, агрегирует, активно использует и т.п. объекты класса А. | |
Пример | См. пример к паттерну "Информационный эксперт" в п. , необходимо определить, какой объект должен отвечать за создание экземпляра "ТоварПродажа". Логично, чтобы это был объект "Продажа", поскольку он содержит (агрегирует) несколько обьектов "ТоварПродажа". | |
Преимущества | Использование этого паттерна не повышает связанности, поскольку созданный класс, как правило, виден только для класса - создателя. | |
Недостатки | Если процедура создания объекта достаточно сложная (например выполняется на основе некоего внешнего условия), логично использовать паттерн "Абстрактная Фабрика", см. , то есть, делегировать обязанность создания обьектов специальному классу. |