《设计模式 - 建造者模式》
今天没听歌,明天就双休了,开森~
还是拿《大话设计模式》这里面的实例来开始学习今天的设计模式
小李一直经营者一家饭店,一直以好吃不贵著称,随着业务越来越大,在其他几家也开了分店。
但是这几家店生意并不好,后来才知道是味道太差,之后小李发现,是厨师在做餐时不按照自己的规范走,才会做出味道怪怪的饭来。
所以,小李痛定思痛,回来指定了一串的体系,规定每道餐必须按照这个来(建造),否则就走人
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();