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 相关文章推荐
Server.HTMLEncode让代码在页面里显示为源代码
Dec 08 PHP
PHP动态页生成静态页的3种常用方法
Nov 13 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
PHP MVC框架中类的自动加载机制实例分析
Sep 18 PHP
laravel实现上传图片的两种方式小结
Oct 12 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
javascript add event remove event
2008/04/07 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
保险专业大学生职业规划书
2014/03/03 职场文书
大学学风建设方案
2014/05/04 职场文书
售后客服工作职责
2014/06/16 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
公司证明怎么写
2014/09/22 职场文书
员工工作表现自我评价
2015/03/06 职场文书
学历证明范文
2015/06/16 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL