如果父类太多,则会造成垂直方向继承过多,导致类的层级过深,从而难以维护,此时可以使用水平扩展代替垂直扩展。
实例如下:
interface Power{public function power();}class Gas implements Power{public function power(){return "汽油";}}class Battery implements Power{public function power(){return "电池";}}
<?phpinterface CarContract{public function drive();}abstract class BaseCar implements CarContract{protected $brand;/*** @var Power*/protected $power;public function __construct(Power $power, $brand){$this->power = $power;$this->brand = $brand;}abstract public function drive();}class LynkCo01 extends BaseCar{public function __construct(Power $power){parent::__construct($power, '领克01');}public function drive(){echo "启动{$this->brand}汽车" . PHP_EOL;echo "动力来源: " . $this->power->power() . PHP_EOL;}}
