建造者模式
将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示
Demo
//用户类
class UserInfo
{
protected $_userName;
protected $_userAge;
protected $_userHobby;
public function setUserName($userName)
{
$this->_userName = $userName;
}
public function setUserAge($userAge)
{
$this->_userAge = $userAge;
}
public function setUserHobby($userHobby)
{
$this->_userHobby = $userHobby;
}
public function getPeopleInfo()
{
echo "<br>这个人的名字是:" . $this->_userName . "<br>年龄为:" . $this->_userAge . "<br> 爱好:" . $this->_userHobby;
}
}
这时候我们要获取一个用户的信息,过程是这样的:
$modelUser = new UserInfo();
$modelUser->setUserName('松涛');
$modelUser->setUserAge('23');
$modelUser->setUserHobby('推理小说');
$modelUser->getPeopleInfo();
这时候创建一个用户建造者类
class UserBuilder
{
protected $_obj;
public function __construct()
{
$this->_obj = new UserInfo();
}
public function builderPeople($userInfo)
{
$this->_obj->setUserName($userInfo['userName']);
$this->_obj->setUserAge($userInfo['userAge']);
$this->_obj->setUserHobby($userInfo['userHobby']);
}
public function getBuliderPeopleInfo()
{
$this->_obj->getPeopleInfo();
}
}
这个是将复杂的创建过程封装在了builderPeople这个方法里面。 接下来是创建对象:
$userArr = array(
'userName' => '松涛',
'userAge' => '23',
'userHobby' => '推理小说');
$modelUserBuilder = new UserBuilder();
$modelUserBuilder->builderPeople($userArr);
$modelUserBuilder->getBuliderPeopleInfo();