星际争霸php,php设计模式之原型模式分析【星际争霸游戏案例】
本文实例讲述了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设计模式之原型模式分析【星际争霸游戏案例】相关推荐
- 4. 星际争霸之php设计模式--工厂方法模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 7. 星际争霸之php设计模式--中介者模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 13. 星际争霸之php设计模式--正面模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 12. 星际争霸之php设计模式--模板模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 15. 星际争霸之php设计模式--策略模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 设计模式(五)—— 原型模式(定义、案例分析、特点、缺点)
文章目录 前言 正文 一.定义 二.模式结构及分析 (一) 模式结构 (二) 模式分析 三.情景假设 四.情景分析 (一) 浅克隆 (二) 深克隆 五.模式优点.缺点 (一)模式优点 (二)模式缺点 ...
- 【GOF23设计模式】原型模式
[GOF23设计模式]原型模式 来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_原型模式.prototype.浅复制.深复制.Cloneable接口 浅复制 1 pa ...
- 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)
[索引页] [源码下载] 乐在其中设计模式(C#) - 原型模式(Prototype Pattern) 作者:webabcd 介绍 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. ...
- 教你如何一篇博客读懂设计模式之—--原型模式
教你如何一篇博客读懂设计模式之----原型模式 what:是什么 原型模式: 用于创建重复的对象,既不用一个属性一个属性去set和get,又不影响性能,原型模式产生的对象和原有的对象不是同一个实例,他 ...
最新文章
- 全网最细 | 21张图带你领略集合的线程不安全
- python爬虫(四)_urllib2:handle处理器和自定义opener
- python导入json模块_Python调用json模块代码实例
- React 教程第六篇 —— 样式绑定
- 上传文件ajax,ajax 文件上传
- 比较两大虚拟桌面厂商的系统镜像管理
- css hack惯用手法
- 快速理解孤儿进程和僵尸进程
- python创建自定义函数is_number()来判断一个字符是否是数字
- Block和inline元素对比
- 区块链开发_比特币开发1
- usaconbsp;chapternbsp;2.1nbsp;castle
- 程序员微信名昵称_好听的微信名800个
- 福利!网络工程师H3CNE认证GB0-191 考试试题库超详细解读-01。持续更新~
- jwt的token自动续约_关于JWTToken自动续期的解决方案
- IDEA展示隐藏文件夹
- python做饼图出现重影_解决echarts中饼图标签重叠的问题
- 用pcDuino来做电子相框
- 从零开始写Python爬虫---1.1 requests库的安装与使用
- 【ELM预测】基于粒子群算法PSO优化极限学习机预测含Matlab源码