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";
- }
- }/*}}}*/
- //builder
- interface IBuilder
- {/*{{{*/
- public function builderName();
- public function builderEngine();
- public function builderChassis();
- public function builderBody();
- public function builderEquipment();
- public function getCar();
- }/*}}}*/
- // 红旗车 builder
- class 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 车 builder
- class 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);
- ?>
来源: http://www.bubuko.com/infodetail-2855024.html