如果父类太多,则会造成垂直方向继承过多,导致类的层级过深,从而难以维护,此时可以使用水平扩展代替垂直扩展。
实例如下:
interface Power
{
public function power();
}
class Gas implements Power
{
public function power()
{
return "汽油";
}
}
class Battery implements Power
{
public function power()
{
return "电池";
}
}
<?php
interface 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;
}
}