1 模式介绍
是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
2.类设计
<?php /** ?* 建造者模式 * copyright (c) http://blog.csdn.net/CleverCode ???*/ ??//需要建造的产品(product)class Car{/*{{{*/ ???public $name; ???public $engine;//发动机 ???public $chassis;//底盘 ???public $body;//车身 ???public $equipment;//电器设备 ????public function setName($name) ???{ ???????$this->name = $name; ???} ????public function setEngine($engine) ???{ ???????$this->engine = $engine; ???} ????public function setChassis($chassis) ???{ ???????$this->chassis = $chassis; ???} ????public function setBody($body) ???{ ???????$this->body = $body; ???} ????public function setEquipment($equipment) ???{ ???????$this->equipment = $equipment; ???} ????public function show() ???{ ???????echo "名称:".$this->name."\r\n"; ???????echo "引擎:".$this->engine."\r\n"; ???????echo "底盘:".$this->chassis."\r\n"; ???????echo "车身:".$this->body."\r\n"; ???????echo "电子设备:".$this->equipment."\r\n"; ????} }/*}}}*/ //builderinterface IBuilder{/*{{{*/ ???public function builderName(); ???public function builderEngine(); ???public function builderChassis(); ???public function builderBody(); ???public function builderEquipment(); ???public function getCar();}/*}}}*/ //红旗车builderclass RedBuilder implements IBuilder{/*{{{*/ ???public $car; ????public function __construct() ???{ ???????$this->car = new Car(); ???} ????public function builderName() ???{ ???????$this->car->setName(‘红旗‘); ????} ????public function builderEngine() ???{ ???????$this->car->setEngine(‘国产发动机‘); ????} ????public function builderChassis() ???{ ???????$this->car->setChassis(‘超大底盘‘); ????} ????public function builderBody() ???{ ???????$this->car->setBody(‘超大‘); ????} ???public function builderEquipment() ???{ ???????$this->car->setEquipment(‘电子设备‘); ????} ????public function getCar() ???{ ???????return $this->car; ???} }/*}}}*/ //QQ车builderclass QQBuilder implements IBuilder{/*{{{*/ ???public $car; ????public function __construct() ???{ ???????$this->car = new Car(); ???} ????public function builderName() ???{ ???????$this->car->setName(‘QQ‘); ????} ????public function builderEngine() ???{ ???????$this->car->setEngine(‘国产发动机‘); ????} ????public function builderChassis() ???{ ???????$this->car->setChassis(‘小底盘‘); ????} ????public function builderBody() ???{ ???????$this->car->setBody(‘小‘); ????} ???public function builderEquipment() ???{ ???????$this->car->setEquipment(‘电子设备‘); ????} ????public function getCar() ???{ ???????return $this->car; ???}}/*}}}*/ //组装者(director)class CarDirector{/*{{{*/ ???public function make(IBuilder $builder) ???{ ???????$builder->builderName(); ???????$builder->builderEngine(); ???????$builder->builderChassis(); ???????$builder->builderBody(); ???????$builder->builderEquipment(); ???????return $builder->getCar(); ???}}/*}}}*/ class Client{/*{{{*/ ???public static function main($argv) ???{ ???????$director = new CarDirector(); ????????$redBuilder = new RedBuilder(); ???????$car = $director->make($redBuilder); ???????$car->show(); ????????echo "\r\n"; ???????$qqBuilder = new QQBuilder(); ???????$car = $director->make($qqBuilder); ???????$car->show(); ???}}/*}}}*/Client::main($argv);?>
php设计模式之建造者模式
原文地址:https://www.cnblogs.com/zxqblogrecord/p/9993823.html