1.建造者模式简介
建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造过程可用于创建多个不同的表现.
2.源码实现
<?php
/*具体产品角色: 鸟类*/
class Bird {
public $_head;
public $_wing;
public $_foot;
public function show()
{
echo "头的颜色: {$this->_head}\n";
echo "翅膀的颜色: {$this->_wing}\n";
echo "脚的颜色: {$this->_foot}\n";
}
}
/*抽象鸟的建造者*/
abstract class BirdBuilder {
protected $_bird;
public function __construct()
{
$this->_bird = new Bird();
}
abstract function BuildHead();
abstract function BuildWing();
abstract function BuildFoot();
public function GetBird()
{
return $this->_bird;
}
}
/*具体鸟的建造者: 蓝鸟*/
class BlueBird extends BirdBuilder {
public function BuildHead()
{
$this->_bird->_head = "Blue";
}
public function BuildWing()
{
$this->_bird->_wing = "Blue";
}
public function BuildFoot()
{
$this->_bird->_foot = "Blue";
}
}
/*指挥者*/
class Director {
function Construct($_builder)
{
$_builder->BuildHead();
$_builder->BuildWing();
$_builder->BuildFoot();
return $_builder->GetBird();
}
}
class Client {
public static function main()
{
$director = new Director();
$blue_bird = $director->Construct(new BlueBird());
$blue_bird->show();
}
}
Client::main();
?>
3.运行及其结果
$ php example.php
头的颜色: Blue
翅膀的颜色: Blue
脚的颜色: Blue
网友评论