您的位置:首页 > 产品设计 > UI/UE

建造者模式(Builder Pattern)

2012-06-14 10:45 316 查看
百度词条的解释

http://baike.baidu.com/view/7995255.htm

<?php
//建造者模式
//产品(套餐)类:
class Food {
private $food = array();
public function add($strName, $price) {
$this->food[$strName] = $price;
}
public function show() {
echo 'Food List:<br/>';
var_dump($this->food);
}
}

class FoodManager {
public function __construct(Builder $builder) {
//做汉堡
$builder->buildHamb();
//做可乐
$builder->buildCoke();
//做鸡块
$builder->buildChip();
}
}

abstract class Builder {
//做汉堡
public abstract function buildHamb();

//做可乐
public abstract function buildCoke();

//做薯条
public abstract function buildChip();

//返回结果
public abstract function getFood();
}

//普通套餐
class NormalBuilder extends Builder {

private $normalFood;

public function __construct() {
$this->normalFood = new Food();
}

public function buildHamb() {
$this->normalFood->add('NormalHamb','$10.50');
}

public function buildCoke() {
$this->normalFood->add('CokeCole','$4.50');
}

public function buildChip() {
$this->normalFood->add('FireChips','$3');
}

public function getFood() {
return $this->normalFood;
}
}

//黄金套餐
class GoldBuilder extends Builder {

private $goldFood;

public function __construct() {
$this->goldFood = new Food();
}

public function buildHamb() {
$this->goldFood->add('GoldHamb','$22');
}

public function buildCoke() {
$this->goldFood->add('CokeCole','$25');
}

public function buildChip() {
$this->goldFood->add('FireChips','$8');
}

public function getFood() {
return $this->goldFood;
}
}

//普通套餐
$normalBuilder = new NormalBuilder();
$foodMannager = new FoodManager($normalBuilder);
var_dump($normalBuilder);
//黄金套餐
$goldBuilder = new GoldBuilder();
$foodMannager = new FoodManager($goldBuilder);
var_dump($goldBuilder);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: