PHP模版方法模式之炒黄瓜
2018.03.26
funsoul
技术
 热度
℃
生命不息,学习不止!
又到了让人充满感激的周末,和往常一样,我一如既往地被“请”去学做菜,作为21世纪的五好青年(吃喝拉撒睡?),我表示毫无压力可言,区区一道炒黄瓜,还不是“洒洒水”。
炒菜的步骤
在拿起铲子那一刻,脑子里回顾了一遍老祖宗传下来的“陈家菜”菜谱 —— 要煮熟,少放盐。心里已经大定,其实炒菜和写程序一样:
- 输入指令:放食材放进去锅内
- 处理指令:煎、炒、烹、炸 ……
- 输出结果:熟了、出锅
于是,我们建立一套炒菜的模版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
abstract class AbstractCooking {
public function cook() { echo 'begin'; $this->PutinMaterials(); $this->ProcessingMaterial(); $this->TakeoutProduct(); echo 'end'; }
abstract protected function PutinMaterials();
abstract protected function ProcessingMaterial();
abstract protected function TakeoutProduct();
}
|
炒黄瓜
有了这套模版,可以说,已经掌握了做菜的最高心法(呸!),无论是煎、炒、烹、炸,还是做饭、煲汤,都遵循这套模版。
今天拿炒黄瓜来举个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
class FriedCucumber extends AbstractCooking{ protected function PutinMaterials(){ echo '开火'; echo '滤干锅里的水'; echo '倒油'; echo '投入蒜蓉并爆香'; echo '投入准备好的黄瓜切片'; }
protected function ProcessingMaterial(){ for ($i = 0;$i < 10;$i++){ echo '翻炒'; } echo '放调味料'; }
protected function TakeoutProduct(){ echo '装盘、上菜'; } }
|
开始
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class Client {
public static function main() { $class = new FriedCucumber(); $class->cook(); } }
Client::main();
|
过程
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| begin 开火 滤干锅里的水 倒油 投入蒜蓉并爆香 投入准备好的黄瓜切片 翻炒 翻炒 翻炒 ... ... 放调味料 装盘、上菜 end
|