Правильно ли использовать 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% обязательно. Может кто сумеет опровергнуть? Просьба отвечать только тем кто знаком с данным паттерном!!
Да, использование switch/case для создания объектов в паттерне Фабричный метод является допустимым подходом. Этот подход позволяет централизованно определять логику создания объектов и управлять процессом инстанцирования, а также добавлять новые типы объектов без изменения кода самой фабрики. Однако, в случае, если количество различных типов объектов станет очень большим, можно рассмотреть другие подходы, такие как использование реестра объектов или стратегий.
Таким образом, использование switch/case в вашем примере для создания объектов BlueHouse и RedHouse вполне уместно и соответствует идее паттерна Фабричный метод.
Да, использование switch/case для создания объектов в паттерне Фабричный метод является допустимым подходом. Этот подход позволяет централизованно определять логику создания объектов и управлять процессом инстанцирования, а также добавлять новые типы объектов без изменения кода самой фабрики. Однако, в случае, если количество различных типов объектов станет очень большим, можно рассмотреть другие подходы, такие как использование реестра объектов или стратегий.
Таким образом, использование switch/case в вашем примере для создания объектов BlueHouse и RedHouse вполне уместно и соответствует идее паттерна Фабричный метод.