建造者模式主要是为了消除其他对象复杂的创建过程。
比如:有个用户UserInfo类,创建这个类,我们需要创建用户的姓名、年龄、金钱等信息,才能获得用户具体的信息结果,这时就可以创建一个UserInfoBuilder用户创建者类,来将UserInfo复杂的创建姓名、年龄、金钱等操作封装起来,简化用户类的创建过程。
/**
* 描述用户信息的一个类,包含用户的信息,如姓名,年龄,金钱
*/
class UserInfo
{
protected $name = '';
protected $age = '';
protected $alz = 0;
public function setName($name)
{
$this->name = $name;
}
public function setAge($age)
{
$this->age = $age;
}
public function setAlz($alz)
{
$this->alz = $alz;
}
public function getProple()
{
echo '这个人的姓名是:'+$this->name.',年龄是:'.$this->age.'岁,有'.$this->alz.'元钱';
}
}
/**
* 实例化,并且创建这个用户的时候,是很痛苦的,需要设计用户名、年龄、金钱
*/
$peopleinfo = array(
'name'=>'Joe',
'age'=>12,
'alz'=>13
);
$UserInfo = new UserInfo();
//下面需要一步步设置用户信息,才能得到用户详细信息,过程纠结而痛苦
$UserInfo->setName($peopleInfo['name']);
$UserInfo->setAge($peopleInfo['age']);
$UserInfo->setAlz($peopleInfo['alz']);
$UserInfo->getPeople();
class UserInfoBuilder
{
protected $obj;
public function __construct()
{
$this->obj = new UserInfo();
}
public function builderPeople($peopleInfo)
{
$this->obj->setName($peopleInfo['name']);
$this->obj->setAge($peopleInfo['age']);
$this->obj->setAlz($peopleInfo['alz']);
}
public function getProple()
{
return $this->obj->getPeople();
}
}
/* 创建过程被封装了,用户使用简单了 */
$peopleinfo = array(
'name'=>'Joe',
'age'=>12,
'alz'=>13
);
$UserInfoBuilder = new UserInfoBuilder;
$UserInfoBuilder->buildPeople($peopleinfo);
$UserInfoBuilder->getProple();