另一种 模板模式
2015-11-24 16:41
176 查看
用途总结:模板模式可以将一系列的步骤自动化,同时又可以满足不同的细节变化。 实现总结:需要一个抽象类来包含框架函数,让具体的子类继承它,并实现所有的步骤。使用的时候只要调用框架函数就自动完成了。 比如:再来一个 “地刺”的演化,只需要写一个class diceEvolution extends evolution
<?php //进化的框架类,它是个抽象类 abstract class evolution { //!!!框架方法,由它来实施各个步骤,用final禁止子类覆盖 final public function process($troop) { $egg = $this->becomeEgg($troop);//生成一个蛋,参数为进化的部队 $this->waitEgg($egg); //等待蛋孵化,参数为蛋 return $this->becomeNew($egg);//孵化后产生新部队 } //下面三个抽象方法,由具体子类来实现 abstract public function becomeEgg($troop); abstract public function waitEgg($egg); abstract public function becomeNew($egg); } //为了简单说明,这里用空中卫士(天蟹)的进化类来演示,地刺等的处理方法类似 //天蟹的进化类继承抽象进化类 class GuardianEvolution extends evolution { //实现生成一个蛋 public function becomeEgg($troop) { echo "销毁飞龙,并生一个蛋!";//销毁飞龙,返回一个蛋的对象的代码 return $troop."蛋"; } //等待蛋孵化 public function waitEgg($egg) { echo "等待孵化!".$egg;//等待几十秒钟的代码 } //孵化后产生新部队 public function becomeNew($egg) { echo $egg."销毁,返回一个天蟹!";//销毁蛋,返回一个天蟹 } } $sds='天蝎'; $e1 = new GuardianEvolution();//新建一个天蟹进化的对象 $e1->process($sds);//!!!重点,让它调用父类的进化框架函数,自动完成三个步骤 ?>
相关文章推荐
- 多媒体开发之直播---直播架构
- GitLab/Git在AndroidStudio上的配置和简单使用
- bzoj-3876 支线剧情
- 飞鸽使用的通信协议是什么(未完待续)
- android谷歌官方自带SwipeRefreshLayout实现下拉刷新
- 建房子之前先挖地基 - Java BlockingQueue理解
- c++类的定义《一》
- IIS部署WCF
- 模板模式
- 数据类型/强制类型转换 和运算符---标识符规则/关键字 a++和++a区别
- jquery设置个滚动条位置,使页面回到顶端
- 基于注释的Spring cache 缓存介绍
- 通过修改host文件访问谷歌
- 二叉树遍历
- 转:makefile里面引用shell注意
- hadoop 平台搭建
- UIImageView 图片填充,按比例,平铺
- 1. Magento2 --- (1) theme ---create a theme
- ehcache在windows下使用RMI同步时出现的问题
- 对于字符串的单个打印、部分打印及全部打印问题