php设计模式之模板模式实例分析【星际争霸游戏案例】


Posted in PHP onMarch 24, 2020

本文实例讲述了php设计模式之模板模式。分享给大家供大家参考,具体如下:

星际中的虫族部队有个特别的进化兵种,就是飞龙,飞龙可以变成空中卫士(天蟹)或者吞噬者(对空的)。另外还有口水兵可以进化变成地刺。

这三个变化过程都是类似的:变化的原部队消失,产生一个蛋或茧,孵化一会儿,蛋消失,新的部队产生。

如果我们把这三个进化独立开,就会产生重复的代码,冗余度增大了,所以我们要设法减少多余的代码。

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

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

模板模式模式示例:

<?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);

?>

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

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

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
Feb 16 PHP
symfony表单与页面实现技巧
Jan 26 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
Mar 14 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 #PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 #PHP
PHP中关于php.ini参数优化详解
Feb 28 #PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 #PHP
php 的多进程操作实践案例分析
Feb 28 #PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 #PHP
You might like
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
2016/09/08 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
python join方法使用详解
2019/07/30 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
python中sys模块是做什么用的
2020/08/16 Python
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
八年级英语教学反思
2014/01/09 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
教师求职自荐信范文
2015/03/04 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书
节约用电通知
2015/04/25 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
《灰雀》教学反思
2016/02/19 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
基于Python实现一个春节倒计时脚本
2022/01/22 Python
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript