oop — есть ли в PHP открытая реализация для абстрактных интерфейсов?

Концепция, о которой я думаю, исходит от оспоримый интерфейс. Этот интерфейс не может быть непосредственно реализован, но вместо этого удовлетворяется путем реализации интерфейса, расширяющего его.

Могу ли я объявить интерфейс, который не может быть реализован, и вместо этого расширить с помощью открытых интерфейсов?

Редактировать: Я понимаю, что такая возможность будет довольно бессмысленной, так как она может быть обойдена третьей стороной, создающей интерфейс, который может расширить базовый интерфейс. Я ищу более чистый способ выразить полиморфизм.

Например:

abstract interface Vehicle
{
}

interface Car extends Vehicle
{
public function drive(RouteProvider $routeProvider, $speed)
}

interface Boat extends Vehicle
{
public function sail(BodyOfWater $water, $heading);
}

class PeopleMover
{
public function move(Vehicle $vehicle)
{
if ($vehicle instanceof Boat) {
// move people across bodies of water
} elseif ($vehicle instanceof Car) {
// move people along roads
}
}
}

7

Решение

Цель интерфейса — определить, как приложение обращается к вашему объекту, а не контролировать, как объекты определяются. Это способ для вашего объекта заявить приложению: «Я реализую этот интерфейс, так что вы можете верить, что у меня есть эти методы».

Если вы хотите контролировать, как определяются объекты, вы должны использовать абстрактные классы с абстрактными методами.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector