建造者模式(Builder)

本文介绍建造者模式如何简化复杂对象的创建过程。通过一个具体的用户信息类的例子,展示了不使用建造者模式时繁琐的对象创建步骤,并对比使用建造者模式后更为简洁的创建方式。

建造者模式主要是为了消除其他对象复杂的创建过程。


比如:有个用户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();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值