题记
==============================================================================
本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦!

本文地址:http://www.cnblogs.com/davidhhuan/p/4248192.html
==============================================================================

星际中的虫族部队有个特别的进化兵种,就是飞龙,飞龙可以变成空中卫士(天蟹)或者吞噬者(对空的)。另外还有口水兵可以进化变成地刺。
这三个变化过程都是类似的:变化的原部队消失,产生一个蛋或茧,孵化一会儿,蛋消失,新的部队产生。
如果我们把这三个进化独立开,就会产生重复的代码,冗余度增大了,所以我们要设法减少多余的代码。

待解决的问题:要经历同样的几个步骤,只是每个步骤的细节会有不同。

思路:做一个进化工程的框架,我们只要控制细节就可以了。

模板模式模式示例:

<?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){//销毁飞龙,返回一个蛋的对象的代码
        }//等待蛋孵化public function waitEgg($troop){//等待几十秒钟的代码
        }//孵化后产生新部队public function becomeNew(($troop){//销毁蛋,返回一个天蟹
        }}//新建一个天蟹进化的对象$e1 = new GuardianEvolution();//让它调用父类的进化框架函数,自动完成三个步骤$e1->process($sds);?>

用途总结:模板模式可以将一系列的步骤自动化,同时又可以满足不同的细节变化。

实现总结:需要一个抽象类来包含框架函数,让具体的子类继承它,并实现所有的步骤。使用的时候只要调用框架函数就自动完成了。

相关文章:

1. 星际争霸之php面向对象(一)

2. 星际争霸之php面向对象(二)

3. 星际争霸之php设计模式--简单工厂模式

4. 星际争霸之php设计模式--工厂方法模式

5. 星际争霸之php设计模式--抽象工厂模式

6. 星际争霸之php设计模式--建造器模式

7. 星际争霸之php设计模式--中介者模式

8. 星际争霸之php设计模式--享元模式

9. 星际争霸之php设计模式--代理模式

10. 星际争霸之php设计模式--原型模式

11. 星际争霸之php设计模式--备忘模式

12. 星际争霸之php设计模式--模板模式

13. 星际争霸之php设计模式--正面模式

14. 星际争霸之php设计模式--状态模式

15. 星际争霸之php设计模式--策略模式

16. 星际争霸之php设计模式--组合模式

17. 星际争霸之php设计模式--职责链模式

18. 星际争霸之php设计模式--观察者模式

19. 星际争霸之php设计模式--迭代器模式

​20. 星际争霸之php设计模式--适配器模式

转载于:https://www.cnblogs.com/davidhhuan/p/4248192.html

12. 星际争霸之php设计模式--模板模式相关推荐

  1. 13. 星际争霸之php设计模式--正面模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  2. 15. 星际争霸之php设计模式--策略模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  3. 4. 星际争霸之php设计模式--工厂方法模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  4. 7. 星际争霸之php设计模式--中介者模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  5. Java设计模式-模板模式

    Java设计模式-模板模式 什么是模板模式? 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义模板,我们的剩余工作就是对其进行充实. ...

  6. Java设计模式—模板模式(Template)

    模板模式 业务需求 编写豆浆制作程序 选材-添加配料-浸泡-豆浆机打碎 选材.浸泡.打碎这几步对于制作不同豆浆都是一样的 比较简单,这里不再使用传统方法,直接上设计模式 模板模式基本介绍 模板模式,在 ...

  7. 【设计模式】Java设计模式 - 模板模式

    [设计模式]Java设计模式 - 模板模式

  8. C语言实现设计模式—模板模式

    文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...

  9. 16、Python与设计模式--模板模式

    一.股票查询客户端 投资股票是种常见的理财方式,我国股民越来越多,实时查询股票的需求也越来越大.今天,我们通过一个简单的股票查询客户端来认识一种简单的设计模式:模板模式. 根据股票代码来查询股价分为如 ...

最新文章

  1. springmvc 将post转换为delete,put
  2. PHP电商的sku,tech| 关于电商系统中sku与spu的一个难题
  3. Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化
  4. oracle改字体大小_oracle数据库字体大小
  5. ECSHOP设置默认配送方式和默认支付方式
  6. 数据传输服务 DTS > 数据订阅 > 数据订阅(新版) > 创建RDS MySQL数据订阅通道(新版)
  7. python class用法理解_带你全面理解python中self的用法
  8. MySQL中的索引使用
  9. TypeScript 的声明文件的使用与编写
  10. JS实现单源点最短路径、动态规划分段图算法
  11. 2 月全国程序员工资统计 + 大厂新入职员工职级对应表
  12. 使用淘宝api直接上传图片的方法
  13. 43.Django04
  14. OSChina 周六乱弹 —— 周末万岁!
  15. 抓包工具Fiddler下载安装
  16. 完美世界如何修改服务器ip,完美世界:完美整容及修改身材流程
  17. 单位阶跃信号是周期信号吗_这些无厘头微信号,扎你心了吗?
  18. 编程表达年月日分秒c语言,年月日时分秒教学反思
  19. 带分数——排列和组合
  20. 华为FusionSphere云计算解决方案资料集

热门文章

  1. Linux故障解决(4)——新安装的CentOS 系统无法上网解决方法 (未知的名称或服务)
  2. php嵌入html代码的三种方法
  3. 专题_期权交易必备知识
  4. 【实例解析】某集团BI决策系统建设方案分享
  5. 华北水利水电大学计算机研究生调剂,2017年华北水利水电大学考研调剂公告
  6. linux centos7.9中安装docker的3种方式-图解
  7. 计算机英语评价,关于计算机专业英文自我评价
  8. linux脚本猜数字游戏,101个shell脚本 猜数字游戏代码
  9. 年度调薪一般涨多少_宁愿辞职也不敢提加薪,心理专家告诉你加薪提多少才合适...
  10. python50种算法_一文洞悉Python必备50种算法