当前位置: 首页 > 后端技术 > PHP

建造者模式(Builder)代码示例PHP设计模式大全(二)

时间:2023-03-30 05:05:51 PHP

目的建造者是创建一个复杂对象的界面的一部分。有时,如果构建者对他正在创建的内容有很好的了解,这个接口可能会变成一个带有默认方法的抽象类(也称为适配器)。如果对象具有复杂的继承树,那么构建器具有复杂的继承树也是合乎逻辑的。注意:构建器通常具有“流畅的界面”,例如PHPUnit模拟生成器。示例PHPUnit:模拟生成器UML图官方PHP进阶学习交流社区“点击”管理整理部分资料,BAT等一线大厂进阶知识体系已准备就绪(相关学习资料及笔试面试题)且不限于:分布式高级架构、高扩展、高性能、高并发、服务器性能调优、TP6、laravel、YII2、Redis、Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等高级干货代码Director.phpcreateVehicle();$builder->addDoors();$builder->addEngine();$builder->addWheel();返回$builder->getVehicle();}}BuilderInterface.phptruck->setPart('rightDoor',new零件\门());$this->truck->setPart('leftDoor',newParts\Door());}publicfunctionaddEngine(){$this->truck->setPart('truckEngine',newParts\Engine());}publicfunctionaddWheel(){$this->truck->setPart('wheel1',newParts\Wheel());$this->truck->setPart('wheel2',newParts\Wheel());$this->truck->setPart('wheel3',newParts\Wheel());$this->truck->setPart('wheel4',newParts\Wheel());$this->truck->setPart('wheel5',newParts\Wheel());$this->truck->setPart('wheel6',newParts\Wheel());}publicfunctioncreateVehicle(){$this->truck=newParts\Truck();}publicfunctiongetVehicle():Vehicle{return$this->truck;}}CarBuilder.phpcar->setPart('rightDoor',newParts\Door());$this->car->setPart('leftDoor',newParts\Door());$this->car->setPart('trunkLid',newParts\Door());}publicfunctionaddEngine(){$this->car->setPart('engine',newParts\Engine());}publicfunctionaddWheel(){$this->car->setPart('wheelLF',newParts\Wheel());$this->car->setPart('wheelRF',newParts\Wheel());$this->car->setPart('wheelLR',newParts\Wheel());$this->car->setPart('wheelRR',newParts\Wheel());}publicfunctioncreateVehicle(){$this->car=newParts\Car();}publicfunctiongetVehicle():Vehicle{return$this->car;}}Parts/Vehicle.phpdata[$key]=$value;}}Parts/Truck.phpbuild($truckBuilder);$this->assertInstanceOf(Truck::class,$newVehicle);}publicfunctiontestCanBuildCar(){$carBuilder=newCarBuilder();$newVehicle=(newDirector())->build($carBuilder);$this->assertInstanceOf(Car::class,$newVehicle);}}PHP互联网架构师成长之路*《设计模式》终极指南PHP互联网架构师50K成长指南+行业解题大纲(持续更新中)面试了10家公司,收获了9个offer,2020年PHP面试题如果你喜欢我的文章,如果想和更多资深开发者交流学习,获得更多各大厂商面试相关的技术咨询和指导,欢迎加入我们的群——点此(群号856460874)如果内容不错希望大家多多支持鼓励您点赞/点赞,欢迎一起交流;另外,大家有什么问题,建议想看什么,可以在评论里提出