12. 星际争霸之php设计模式--模板模式
题记
==============================================================================
本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设计模式--模板模式相关推荐
- 13. 星际争霸之php设计模式--正面模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 15. 星际争霸之php设计模式--策略模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 4. 星际争霸之php设计模式--工厂方法模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 7. 星际争霸之php设计模式--中介者模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- Java设计模式-模板模式
Java设计模式-模板模式 什么是模板模式? 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义模板,我们的剩余工作就是对其进行充实. ...
- Java设计模式—模板模式(Template)
模板模式 业务需求 编写豆浆制作程序 选材-添加配料-浸泡-豆浆机打碎 选材.浸泡.打碎这几步对于制作不同豆浆都是一样的 比较简单,这里不再使用传统方法,直接上设计模式 模板模式基本介绍 模板模式,在 ...
- 【设计模式】Java设计模式 - 模板模式
[设计模式]Java设计模式 - 模板模式
- C语言实现设计模式—模板模式
文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...
- 16、Python与设计模式--模板模式
一.股票查询客户端 投资股票是种常见的理财方式,我国股民越来越多,实时查询股票的需求也越来越大.今天,我们通过一个简单的股票查询客户端来认识一种简单的设计模式:模板模式. 根据股票代码来查询股价分为如 ...
最新文章
- springmvc 将post转换为delete,put
- PHP电商的sku,tech| 关于电商系统中sku与spu的一个难题
- Android踩坑日记:使用Fesco图片加载库在GridView上的卡顿优化
- oracle改字体大小_oracle数据库字体大小
- ECSHOP设置默认配送方式和默认支付方式
- 数据传输服务 DTS > 数据订阅 > 数据订阅(新版) > 创建RDS MySQL数据订阅通道(新版)
- python class用法理解_带你全面理解python中self的用法
- MySQL中的索引使用
- TypeScript 的声明文件的使用与编写
- JS实现单源点最短路径、动态规划分段图算法
- 2 月全国程序员工资统计 + 大厂新入职员工职级对应表
- 使用淘宝api直接上传图片的方法
- 43.Django04
- OSChina 周六乱弹 —— 周末万岁!
- 抓包工具Fiddler下载安装
- 完美世界如何修改服务器ip,完美世界:完美整容及修改身材流程
- 单位阶跃信号是周期信号吗_这些无厘头微信号,扎你心了吗?
- 编程表达年月日分秒c语言,年月日时分秒教学反思
- 带分数——排列和组合
- 华为FusionSphere云计算解决方案资料集
热门文章
- Linux故障解决(4)——新安装的CentOS 系统无法上网解决方法 (未知的名称或服务)
- php嵌入html代码的三种方法
- 专题_期权交易必备知识
- 【实例解析】某集团BI决策系统建设方案分享
- 华北水利水电大学计算机研究生调剂,2017年华北水利水电大学考研调剂公告
- linux centos7.9中安装docker的3种方式-图解
- 计算机英语评价,关于计算机专业英文自我评价
- linux脚本猜数字游戏,101个shell脚本 猜数字游戏代码
- 年度调薪一般涨多少_宁愿辞职也不敢提加薪,心理专家告诉你加薪提多少才合适...
- python50种算法_一文洞悉Python必备50种算法