2
以下代码是否违反了一些OOP原则/模式?检查抽象类内的接口实现是否为反模式?
尤其是我感兴趣的的instanceof检查车内:: whatCanDo()方法,如果一个子类implents一个特定的接口入住手续。
乍一看,它似乎违反了利斯科夫的原则,但实际上并没有这样做,因为飞机和汽车类别仍然可以互换。
abstract class Vehicle {
public function whatCanDo() {
if ($this instanceof CanFly) {
echo "can fly";
}
}
}
interface CanFly {
}
class Airplane extends Vehicle implements CanFly {
}
class Car extends Vehicle {
}
我们可以假设回声只是例如,我想 –
@RobbieAverill很难说。我看到太多人在他们的“班级”代码中有回声。基本上每个第三个PDO包装(这实际上需要一个单独的咆哮)在StackOverflow做到这一点。 –
@tereško回声它只是例如,类名也是样本,我的真实代码是不同的。 – g4b0