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

我们一般用new来新增对象,不过很多时候新增一个对象需要一些工作。而星际里面往往会新增某些类的大量的对象,比如新增很多机枪兵和龙骑。

待解决的问题:我们能否减少new的使用,同时避免需要新增对象的时候,了解对象的类名。

思路:php5提供了克隆方法,我们可以新增一个对象,然后每次需要新增和她同类的对象,克隆他就可以了。

原型(Prototype)模式示例:

//机枪兵类

class Marine

{

//所属的用户ID

public $playerID

//构造函数,参数为用户的id

public function __construct($id)

{

$this->playerID = $id;

}

}

//兵种的管理类

class TroopManager

{

//数组,用于存放多个兵种的原型

public $troopPrototype = array();

//增加原型,第一个参数为原型的名字,第二个参数为原型对象

public function addPrototype($name, $prototype)

{

$this->troopPrototype[$name] = $prototype;

}

//获取原型的克隆,也就是替代new的方法,参数为原型的名字

public function getPrototype($name)

{

return clone $this->troopPrototype[$name];

}

}

//初始化兵种的管理类

$manager = new TroopManager();

//初始化两个属于不同玩家的机枪兵的原型

$m1 = new Marine(1);

$m2 = new Marine(2);

//增加原型,同时用比较容易记忆的名字来命名原型

$manager->addPrototype('Marine of 1', $m1);

$manager->addPrototype('Marine of 2', $m2);

//当需要新增对象的时候,我们可以不必知道对象的类名和初始化的工作

$m3 = $manager->getPrototype('Marine of 1');

?>

用途总结:原型模式可以将新增对象的工作细节封装。

实现总结:需要一个原型管理类,实现增加和获取克隆原型的方法。注意这里由于为了简明,省略了一些东西,实际上我们可以在克隆方法上做一些改动,也可以用接口规范每个原型类。

PHP、、、、、及

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

(编辑:DavidHHuan)

星际争霸php,php设计模式之原型模式分析【星际争霸游戏案例】相关推荐

  1. 4. 星际争霸之php设计模式--工厂方法模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  2. 7. 星际争霸之php设计模式--中介者模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  3. 13. 星际争霸之php设计模式--正面模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  4. 12. 星际争霸之php设计模式--模板模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  5. 15. 星际争霸之php设计模式--策略模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  6. 设计模式(五)—— 原型模式(定义、案例分析、特点、缺点)

    文章目录 前言 正文 一.定义 二.模式结构及分析 (一) 模式结构 (二) 模式分析 三.情景假设 四.情景分析 (一) 浅克隆 (二) 深克隆 五.模式优点.缺点 (一)模式优点 (二)模式缺点 ...

  7. 【GOF23设计模式】原型模式

    [GOF23设计模式]原型模式 来源:http://www.bjsxt.com/  一.[GOF23设计模式]_原型模式.prototype.浅复制.深复制.Cloneable接口  浅复制 1 pa ...

  8. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

    [索引页] [源码下载] 乐在其中设计模式(C#) - 原型模式(Prototype Pattern) 作者:webabcd 介绍 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. ...

  9. 教你如何一篇博客读懂设计模式之—--原型模式

    教你如何一篇博客读懂设计模式之----原型模式 what:是什么 原型模式: 用于创建重复的对象,既不用一个属性一个属性去set和get,又不影响性能,原型模式产生的对象和原有的对象不是同一个实例,他 ...

最新文章

  1. 全网最细 | 21张图带你领略集合的线程不安全
  2. python爬虫(四)_urllib2:handle处理器和自定义opener
  3. python导入json模块_Python调用json模块代码实例
  4. React 教程第六篇 —— 样式绑定
  5. 上传文件ajax,ajax 文件上传
  6. 比较两大虚拟桌面厂商的系统镜像管理
  7. css hack惯用手法
  8. 快速理解孤儿进程和僵尸进程
  9. python创建自定义函数is_number()来判断一个字符是否是数字
  10. Block和inline元素对比
  11. 区块链开发_比特币开发1
  12. usaconbsp;chapternbsp;2.1nbsp;castle
  13. 程序员微信名昵称_好听的微信名800个
  14. 福利!网络工程师H3CNE认证GB0-191 考试试题库超详细解读-01。持续更新~
  15. jwt的token自动续约_关于JWTToken自动续期的解决方案
  16. IDEA展示隐藏文件夹
  17. python做饼图出现重影_解决echarts中饼图标签重叠的问题
  18. 用pcDuino来做电子相框
  19. 从零开始写Python爬虫---1.1 requests库的安装与使用
  20. 【ELM预测】基于粒子群算法PSO优化极限学习机预测含Matlab源码

热门文章

  1. html怎么设置顶部布局,HTML怎么布局
  2. python递归全排列_python递归全排列实现方法
  3. SAP PS 第4节 网络成本计划
  4. 父组件如何调用子组件中的方法?
  5. 苹果a13_iPhone 11性能表现有多强?苹果A13仿生芯片了解一下
  6. 【ML项目】基于网络爬虫和数据挖掘算法的web招聘数据分析(一)——数据获取与处理
  7. m8 windows android,M8 Android 图文刷机详细教程
  8. mysql 日志分类详解
  9. 物流交通大数据平台-物流时效分析(二)
  10. 借条的诉讼时效是如何规定的