生成器模式-创建型设计模式 [PHP]

目的:生成器的目的是将复杂对象的创建过程(流程)进行抽象,生成器表现为接口的形式。

如果对象有复杂的继承树,理论上创建对象的生成器也同样具有复杂的继承树。

传进来一个生成器, 我调用这个生成器来生成我所需要的汽车,这就是生成器模式的核心.这个生成器Builder是个接口,把复杂对象的创建过程进行抽象

class Director\n{\n    public function build(Builder $builder): Vehicle\n    {\n        $builder->createVehicle();\n        $builder->addDoors();\n        $builder->addEngine();\n        $builder->addWheel();\n        return $builder->getVehicle();\n    }\n}

这就是生成器这个接口

 

interface Builder\n{\n    public function createVehicle();\n    public function addWheel();\n    public function addEngine();\n    public function addDoors();\n    public function getVehicle(): Vehicle;\n}

有两个具体的实现类 CarBuilder TruckBuilder 分别生成汽车和卡车

 

class TruckBuilder implements Builder\n{\n    private Truck $truck;\n    public function addDoors(){\n    }\n    public function addEngine(){\n    }\n    public function addWheel(){\n    }\n\n    public function createVehicle(){\n    }\n\n    public function getVehicle(): Vehicle{\n    }\n}

使用的时候,先创建builder,把builder通过参数传递进去

$truckBuilder = new TruckBuilder();\n$newVehicle = (new Director())->build($truckBuilder);

发表回复