时间:2021-07-01 10:21:17 帮助过:17人阅读
1.产品类Meal(套餐类)
class Meal
{
private $food;
private $drink;
public function setFood($f) {
$this->food = $f;
}
public function setDrink($d) {
$this->drink = $d;
}
public function getFood() {
return $this->food;
}
public function getDrink() {
return $this->drink;
}
}2.抽象建造者类MealBuilder(套餐建造者类)
abstract class MealBuilder
{
protected $meal;
function __construct() {
$this->meal = new Meal();
}
abstract protected function buildFood();
abstract protected function buildDrink();
public function getMeal() {
return $this->meal;
}
}class SubMealBuilderA extends MealBuilder
{
public function buildFood() {
$this->meal->setFood('一个鸡腿堡');
}
public function buildDrink() {
$this->meal->setDrink('一杯可乐');
}
public function getMeal() {
return $this->meal;
}
}class SubMealBuilderB extends MealBuilder
{
public function buildFood() {
$this->meal->setFood('一个鸡肉卷');
}
public function buildDrink() {
$this->meal->setDrink('一杯果汁');
}
public function getMeal() {
return $this->meal;
}
}class KFCWaiter
{
private $MealBuilder;
public function setMealBuilder($mb) {
eval("\$m= new {$mb}();");
$this->MealBuilder = $m;
return $this->MealBuilder;
}
public function construct() {
$this->MealBuilder->buildFood();
$this->MealBuilder->buildDrink();
return $this->MealBuilder->getMeal();
}
}SubMealBuilderA SubMealBuilderB
$mealstring = simplexml_load_file('meal.xml');
$waiter = new KFCWaiter();
foreach ($mealstring as $Submeal) {
$waiter->setMealBuilder($Submeal->name);
$meal = $waiter->construct();
echo '套餐组成:';
echo "
";
echo $meal->getFood();
echo "
";
echo $meal->getDrink();
echo "
";
echo "
";
}运行结果
套餐组成:
一个鸡腿堡
一杯可乐
套餐组成:
一个鸡肉卷
一杯果汁
以上就介绍了php 建造者模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。