Правильно ли использовать switch/case в паттерне Фабричный метод / Factory Method? Всем привет.
По сути сабж.
Приведу пример:interface House
{
public function build();
public function demolition();
}
class BlueHouse implements House
{
// реализация
}
class RedHouse implements House
{
// реализация
}
class Factory
{
public function factoryMethod($color)
{
switch($color)
{
case 'Red':
return new RedHouse();

case 'Blue':
return new BlueHouse();
default :
throw new Exception('Undefined house\'s color');
}
}
}
Можно использовать Switch/Case для создания обьектов?
Пока ничего против не нашел но и не нашел что это 100% обязательно. Может кто сумеет опровергнуть?
Просьба отвечать только тем кто знаком с данным паттерном!!

21 Авг 2019 в 07:04
152 +1
0
Ответы
1

Да, использование switch/case для создания объектов в паттерне Фабричный метод является допустимым подходом. Этот подход позволяет централизованно определять логику создания объектов и управлять процессом инстанцирования, а также добавлять новые типы объектов без изменения кода самой фабрики. Однако, в случае, если количество различных типов объектов станет очень большим, можно рассмотреть другие подходы, такие как использование реестра объектов или стратегий.

Таким образом, использование switch/case в вашем примере для создания объектов BlueHouse и RedHouse вполне уместно и соответствует идее паттерна Фабричный метод.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир