atis2345
@atis2345
PHP developer

Правильно ли использовать 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% обязательно. Может кто сумеет опровергнуть?
Просьба отвечать только тем кто знаком с данным паттерном!!
  • Вопрос задан
  • 752 просмотра
Пригласить эксперта
Ответы на вопрос 2
class BlueHouse extends House{}

class RedHouse extends House{}

abstract class House
{
    const RED= 1;
    const BLUE= 2;

    public static function getInstance($color)
    {
        switch($color)
        {
            case self::RED:
                return new RedHouse();
                break;
            case self::BLUE:
                return new BlueHouse();
                break;
            default :
                throw new Exception('Undefined house\'s color');
                break;
        }
    }

    abstract function build();
    abstract function demolition();
}
Ответ написан
@Finsh
reflectionclass как-то использовал для этих целей рефлексию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы