<?php
// 生成器【建造者】模式:将一个复杂对象的构造与它的表示分离
// 具体产品角色
class Bird{
public $head;
public $wind;
public $foot;
public function show()
{
echo $this->head;
echo $this->wind;
echo $this->foot;
}
}
// 抽象鸟的建造者(生成器)
abstract class BirdBuilder{
public $bird;
public function __construct()
{
$this->bird = new Bird();
}
abstract function Buildhead();
abstract function Buildwind();
abstract function Buildfoot();
abstract function getBird();
}
// 具体鸟的建造者(生成器) hot鸟
class HotBird extends BirdBuilder{
public function getBird(){
return $this->bird;
}
public function Buildhead(){
$this->bird->head = "hothead";
}
public function Buildwind(){
$this->bird->wind = "hotwind";
}
public function Buildfoot(){
$this->bird->foot = "hotfoot";
}
}
// 具体鸟的建造者(生成器) cool鸟
class CoolBird extends BirdBuilder{
public function getBird(){
// var_dump($this->bird);
return $this->bird;
}
public function Buildhead(){
$this->bird->head = "Coolhead";
}
public function Buildwind(){
$this->bird->wind = "Coolwind";
}
public function Buildfoot(){
$this->bird->foot = "Coolfoot";
}
}
// 指挥者
class Director{
public function __construct($bird)
{
$bird->Buildhead();
$bird->Buildwind();
$bird->Buildfoot();
return $bird->getBird()->show();
}
}
$CoolBird = new CoolBird();
$Director = new Director($CoolBird);
?>
// 生成器【建造者】模式:将一个复杂对象的构造与它的表示分离
// 具体产品角色
class Bird{
public $head;
public $wind;
public $foot;
public function show()
{
echo $this->head;
echo $this->wind;
echo $this->foot;
}
}
// 抽象鸟的建造者(生成器)
abstract class BirdBuilder{
public $bird;
public function __construct()
{
$this->bird = new Bird();
}
abstract function Buildhead();
abstract function Buildwind();
abstract function Buildfoot();
abstract function getBird();
}
// 具体鸟的建造者(生成器) hot鸟
class HotBird extends BirdBuilder{
public function getBird(){
return $this->bird;
}
public function Buildhead(){
$this->bird->head = "hothead";
}
public function Buildwind(){
$this->bird->wind = "hotwind";
}
public function Buildfoot(){
$this->bird->foot = "hotfoot";
}
}
// 具体鸟的建造者(生成器) cool鸟
class CoolBird extends BirdBuilder{
public function getBird(){
// var_dump($this->bird);
return $this->bird;
}
public function Buildhead(){
$this->bird->head = "Coolhead";
}
public function Buildwind(){
$this->bird->wind = "Coolwind";
}
public function Buildfoot(){
$this->bird->foot = "Coolfoot";
}
}
// 指挥者
class Director{
public function __construct($bird)
{
$bird->Buildhead();
$bird->Buildwind();
$bird->Buildfoot();
return $bird->getBird()->show();
}
}
$CoolBird = new CoolBird();
$Director = new Director($CoolBird);
?>