工厂模式:顾名思义就是可用生产出物品的工厂这么一个模式,对应到计算机也很好理解,就是一个工厂类,这个工厂类可用生成其他各种各样的类,而这个工厂类就提供这样一种功能
好处:所有的模式都是为了能让代码重用性更高,重构起来更方便而存在,而简单工厂模式省去了在内部有大量的new class的操作
<?php
interface Vehicle
{
public function drive();
}
class Car implements Vehicle()
{
public function drive()
{
echo '我是一辆小汽车,载人少但是速度很快';
}
}
class Bus implements Vehicle()
{
public function drive()
{
echo '我是一辆公交车,载人多但是速度慢';
}
}
class AirPlane implements Vehicle()
{
public function drive()
{
echo '我是一辆飞机,我飞的很快,而且载人更多';
}
}
class VehicleFactory
{
public static function build($class_name = null)
{
$class_name = ucfirst($class_name);
if ($class_name !== null && class_exists($class_name)) {
return new $class_name();
}
return null;
}
}
// 工厂类用了一个静态方法来创建其他类,在客户端中就可以这样使用:
VehicleFactory::build('car')->drive();
VehicleFactory::build('bus')->drive();
VehicleFactory::build('airplane')->drive();