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生成静态HTML速度快类库
Mar 18 PHP
PHP DataGrid 实现代码
Aug 12 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
php获取文件大小的方法
Feb 26 PHP
深入分析PHP引用(&amp;)
Sep 04 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
php从字符串创建函数的方法
Mar 16 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
php实现评论回复删除功能
May 23 PHP
php 数据结构之链表队列
Oct 17 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 #PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 #PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 #PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 #PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 #PHP
PDO实现学生管理系统
Mar 21 #PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 #PHP
You might like
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
Python中for循环详解
2014/01/17 Python
Python编程中的异常处理教程
2015/08/21 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
工程招投标邀请书
2014/01/30 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
擅自离岗检讨书
2014/09/12 职场文书
刑事代理授权委托书
2014/09/17 职场文书
中秋节慰问信
2015/02/15 职场文书
员工自我评价范文
2015/03/11 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
会议通知范文
2015/04/15 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
圆明园观后感
2015/06/03 职场文书
团干部培训班心得体会
2016/01/06 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL