建造者模式-创建套餐
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();
}
}<?xml version="1.0" encoding="UTF-8"?> <meal> <mealA> <name>SubMealBuilderA</name> </mealA> <mealB> <name>SubMealBuilderB</name> </mealB> </meal>
$mealstring = simplexml_load_file('meal.xml');
$waiter = new KFCWaiter();
foreach ($mealstring as $Submeal) {
$waiter->setMealBuilder($Submeal->name);
$meal = $waiter->construct();
echo '套餐组成:';
echo "<br>";
echo $meal->getFood();
echo "<br>";
echo $meal->getDrink();
echo "<br>";
echo "<br>";
}运行结果
套餐组成:
一个鸡腿堡
一杯可乐
套餐组成:
一个鸡肉卷
一杯果汁
立即学习“PHP免费学习笔记(深入)”;
以上就介绍了php 建造者模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号