PHP 简单工厂模式是一种创建型设计模式,它允许用户通过一个工厂类来创建对象,而无需知道最终对象的具体类型。以下是一个简单的 PHP 简单工厂模式示例:
假设我们希望创建不同类型的汽车,并为它们提供不同的名称和颜色。为此,我们可以创建一个工厂类 CarFactory
,它将负责创建不同类型的汽车实例。
class Car {
private $name;
private $color;
public function __construct(string $name, string $color) {
$this->name = $name;
$this->color = $color;
}
public function getName(): string {
return $this->name;
}
public function getColor(): string {
return $this->color;
}
}
class CarFactory {
public static function createCar(string $type, string $name, string $color): Car {
switch ($type) {
case 'sedan':
return new Car($name, $color . ' 涂装轿车');
case 'suv':
return new Car($name, $color . ' 涂装SUV');
default:
throw new InvalidArgumentException('未知类型: ' . $type);
}
}
}
现在我们可以使用 CarFactory
创建不同类型的汽车实例。
// 创建一辆名为“轩逸”的轿车
$sedan = CarFactory::create('sedan', '轩逸', '红色');
echo $sedan->getName() . ' 的颜色是:' . $sedan->getColor(); // 输出:轩逸 的颜色是:红色 涂装轿车
// 创建一辆名为“RAV4”的SUV
$suv = CarFactory::create('suv', 'RAV4', '白色');
echo $suv->getName() . ' 的颜色是:' . $suv->getColor(); // 输出:RAV4 的颜色是:白色 涂装SUV
通过使用简单工厂模式,我们可以轻松地创建不同类型的对象,而无需暴露它们的构造函数。此外,我们还可以集中管理其中的创建逻辑,并在需要时轻松添加新的对象类型。