php 建造者模式
程序员文章站
2022-05-19 12:25:23
...
建造者模式-创建套餐
3.具体建造者类SubMealBuilderA(A套餐建造者类)
4.具体建造者类SubMealBuilderB(B套餐建造者类)
5.指挥者类KFCWaiter(服务员类)
6.配置文件
6.辅助测试代码
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; } }
3.具体建造者类SubMealBuilderA(A套餐建造者类)
class SubMealBuilderA extends MealBuilder { public function buildFood() { $this->meal->setFood('一个鸡腿堡'); } public function buildDrink() { $this->meal->setDrink('一杯可乐'); } public function getMeal() { return $this->meal; } }
4.具体建造者类SubMealBuilderB(B套餐建造者类)
class SubMealBuilderB extends MealBuilder { public function buildFood() { $this->meal->setFood('一个鸡肉卷'); } public function buildDrink() { $this->meal->setDrink('一杯果汁'); } public function getMeal() { return $this->meal; } }
5.指挥者类KFCWaiter(服务员类)
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(); } }
6.配置文件
SubMealBuilderA SubMealBuilderB
6.辅助测试代码
$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教程有兴趣的朋友有所帮助。