@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 [];
    }
}

  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ответы на вопрос 1
@d1skort
junior
"Фабричный метод" (setTransport) и желательно getItems унести, используя паттерн "Стратегия" (изменяемое нужно отделять от неизменяемого)
Ответ написан
Ваш ответ на вопрос

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

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