@vrazbros

Какой шаблон лучше подходит для избавления от множества if?

Привет

В программе есть куча обьектов различных классов (самолеты, катера, вертолеты, танки, машины, грузовики), которые подключают различные
интерфейсы (ехать, лететь, стрелять, перевозить). Соответсвенно в коде надо использовать кучу условий чтобы понять что за обьекто
и какой метод можно вызвать:
foreach($vehicles as $vehicle) {
    switch($vehicle->type)
    {
        case 'car':
            $vehicle->move();
            $vehicle->closeDoor();
            break;
        case 'ship':
            $vehicle->move();
            $vehicle->swim();
            break;
        case 'airplane':
            $vehicle->fly();
            $vehicle->landing();
            break;
        case 'tank':
        	$vehicle->move();
			$vehicle->stop();
            $vehicle->fire();
            break;
    }
	$vehicle->stop();    
}


Не могу понять какую лучше использовать технику чтобы избавится от кучи if в программе ? тк методы у обьекта могут быть разные полиморфизм не подходит, надо точно знать
обьект какого класса используется.
  • Вопрос задан
  • 660 просмотров
Пригласить эксперта
Ответы на вопрос 2
@synapse_people
Или делай интерфейс отдельный или посмотри в сторону паттерна Адаптер
Ответ написан
Комментировать
@grafgeest
Обычно рекомендуют паттерн Стратегия
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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