2
次のコードは、いくつかのOOPの原則/パターンに違反していますか?特に抽象クラス内のインタフェース実装のチェックはアンチパターンですか?
Iは、車内 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は難しいと思います。私は、クラスのコードにエコーを持つ人が非常に多くの人を見てきました。基本的に、StackOverflowで3番目ごとのPDOラッパー(これは実際には別の暴言が必要になります)を行います。 –
@tereškoエコーそれはちょうど例です、クラス名もサンプルです、私の実際のコードは異なります。 – g4b0