《设计模式 - 建造者模式》

 

今天没听歌,明天就双休了,开森~

 

还是拿《大话设计模式》这里面的实例来开始学习今天的设计模式

小李一直经营者一家饭店,一直以好吃不贵著称,随着业务越来越大,在其他几家也开了分店。

但是这几家店生意并不好,后来才知道是味道太差,之后小李发现,是厨师在做餐时不按照自己的规范走,才会做出味道怪怪的饭来。

 

所以,小李痛定思痛,回来指定了一串的体系,规定每道餐必须按照这个来(建造),否则就走人

1:构建产品类 - 定义一道餐的抽象步骤 - 基础步骤,必须执行

/**具体产品角色  饭
 * Class Meal
 */
class Meal
{
    public function exec()
    {
        echo "配菜:{$this->food}";
        echo PHP_EOL;
        echo "调料:{$this->seasoning}";
        echo PHP_EOL;
        echo "火候:{$this->fire}";
        echo PHP_EOL;
    }
}

 

2:真正的管理办法,必须每家都准守

/** 做饭的建造者(生成器)
 * Class BirdBuilder
 */
abstract class MealBuilder
{
    function __construct()
    {
        $this->meal = new Meal();
    }
 
    abstract function BuildFood();
    abstract function BuildSeasoning();
    abstract function BuildFire();
}
 

 

3:做到具体的菜

/**具体 菜 的建造者(生成器)   宫保鸡丁
 * Class GonBaoJiDing
 */
class GonBaoJiDing extends MealBuilder
{
 
    function BuildFood()
    {
        $this->meal->food = "肉、胡萝卜、、";
    }
 
    function BuildSeasoning()
    {
        $this->meal->seasoning = "盐,辣椒、、、";
    }
 
    function BuildFire()
    {
        $this->meal->fire = "大火";
    }
}

 

4:指定执行者

/**指挥者
 * Class Director
 */
class Director
{
    function Construct($_builder)
    {
        $_builder->BuildFood();
        $_builder->BuildSeasoning();
        $_builder->BuildFire();
        return $_builder->GetMeal();
    }
}

 

5:用户(客户端) - 点餐

$director = new Director();
 
echo "宫保鸡丁的组成:";
 
$GonBaoJiDing = $director->Construct(new GonBaoJiDing());
$blue_bird->exec();

 

posted @ 2018-11-30 17:02  Zzz哈  Views(137)  Comments(0Edit  收藏  举报