Задать вопрос
@WQP

Какой паттерн для этого подойдёт?

Здравствуйте, не могу решить какой паттерн будет для этого самый удобный.

Как связать несколько классов в одном? Имеем несколько классов Car, Bus, Plane. У всех этих классов есть один метод getItems() (все от одного интерфейса код ниже). Как их связать в одном классе Transport?

Чтобы доступ был так:
$carItems = (new Transport)->setTransport('Car')->getItems();
$busItems = (new Transport)->setTransport('Bus')->getItems();

// а также 

$carItems = (new Car)->getItems();
$busItems = (new Bus)->getItems();


TransportInterface
interface TransportInterface
{
    public function getItems();
}

Car
class Car implements TransportInterface
{
    public function getItems()
    {
        return [];
    }
}

Bus
class Bus implements TransportInterface
{
    public function getItems()
    {
        return [];
    }
}

Plane
class Plane implements TransportInterface
{
    public function getItems()
    {
        return [];
    }
}

  • Вопрос задан
  • 329 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@d1skort
junior
"Фабричный метод" (setTransport) и желательно getItems унести, используя паттерн "Стратегия" (изменяемое нужно отделять от неизменяемого)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽