Home > Backend Development > PHP Tutorial > php builder pattern

php builder pattern

WBOY
Release: 2016-08-08 09:25:02
Original
1133 people have browsed it

建造者模式-创建套餐

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;
	}
}
Copy after login

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;
	}
}
Copy after login

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;
	}
}
Copy after login

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;
	}
}
Copy after login

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();
	}
}
Copy after login

6.配置文件
<?xml version="1.0" encoding="UTF-8"?>  
  <meal>  
	  <mealA>  
		  <name>SubMealBuilderA</name>   
	  </mealA> 
	  <mealB>  
		  <name>SubMealBuilderB</name>   
	  </mealB>  	  
  </meal> 
Copy after login

6.辅助测试代码
$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>";
}
Copy after login

运行结果

套餐组成:
一个鸡腿堡
一杯可乐
套餐组成:
一个鸡肉卷
一杯果汁

以上就介绍了php 建造者模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template