- 一个主体有多个结构(例如小白(一个人):会说多少种语言、肤色、发色、家境、家里多少口人、性格、有木有配偶等等)
- 我们就要针对这个人返回这个人的所有结构
- 这个人每个结构处理方式不同
- 那么我们就要决定这个人究竟是什么人
这里就以卢本伟为案例
/**具体产品角色 人
* Class Bird
*/
class Person
{
public $_language;
public $_skin;
public $_hair;
public $_family;
public $_population;
public $_nature;
public $_marriage;
function show()
{
echo "会的语言:{$this->_language}<br/>";
echo "肤色:{$this->_skin}<br/>";
echo "发色:{$this->_hair}<br/>";
echo "家境:{$this->_family}<br/>";
echo "人口:{$this->_population}<br/>";
echo "性格:{$this->_nature}<br/>";
echo "婚姻关系:{$this->_marriage}<br/>";
}
}
/**人的建造者(生成器)
* Class BirdBuilder
*/
abstract class PersonBuilder
{
protected $_person;
function __construct()
{
$this->_person=new Person();
}
abstract function BuildLanguage();//语言
abstract function BuildSkin();//肤色
abstract function BuildHair();//发色
abstract function BuildFamily();//家境
abstract function BuildPopulation();//人口
abstract function BuildNature();//性格
abstract function BuildMarriage();//婚姻关系
abstract function GetPerson();//获取人物所有信息
}
/**具体人的建造者(生成器) 卢本伟(55开)
* Class BlueBird
*/
class LuBenWei extends PersonBuilder
{
function BuildLanguage()
{
$this->_person->_language="会骚话、臭嗨话";
}
function BuildSkin()
{
$this->_person->_skin="卢本伟什么肤色都有";
}
function BuildHair()
{
$this->_person->_hair="卢本伟是个光头";
}
function BuildFamily()
{
$this->_person->_family="卢本伟富得流油";
}
function BuildPopulation()
{
$this->_person->_population="卢本伟是个孤儿";
}
function BuildNature()
{
$this->_person->_nature="卢本伟帅的一批、卢本伟不跟你多BB";
}
function BuildMarriage()
{
$this->_person->_marriage="卢本伟有个白富美老婆";
}
function GetPerson()
{
return $this->_person;
}
}
/**指挥者
* Class Director
*/
class Director
{
/**
* @param $_builder 建造者
* @return mixed 产品类:人
*/
function Construct($_builder)
{
$_builder->BuildLanguage();
$_builder->BuildSkin();
$_builder->BuildHair();
$_builder->BuildFamily();
$_builder->BuildPopulation();
$_builder->BuildNature();
$_builder->BuildMarriage();
return $_builder->GetPerson();
}
}
$director=new Director();
echo "卢本伟的人物信息:<hr/>";
$lubenwei=$director->Construct(new LuBenWei());
$lubenwei->show();
//执行的结果
卢本伟的人物信息:
会的语言:会骚话、臭嗨话
肤色:卢本伟什么肤色都有
发色:卢本伟是个光头
家境:卢本伟富得流油
人口:卢本伟是个孤儿
性格:卢本伟帅的一批、卢本伟不跟你多BB
婚姻关系:卢本伟有个白富美老婆