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 相关文章推荐
利用php获取服务器时间的实现代码
Jun 07 PHP
win7+apache+php+mysql环境配置操作详解
Jun 10 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
php备份数据库类分享
Apr 14 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
php有效防止同一用户多次登录
Nov 19 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php面试中关于面向对象的相关问题
Feb 13 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 PHP
yii框架使用分页的方法分析
Jul 25 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Python连接DB2数据库
2016/08/27 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python3中rank函数的用法
2019/11/27 Python
python实现超级玛丽游戏
2020/03/18 Python
python装饰器代码深入讲解
2021/03/01 Python
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
个人校本研修方案
2014/05/26 职场文书
领导班子党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
三方股份合作协议书
2014/10/13 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python