本文实例讲述了php设计模式之享元模式。分享给大家供大家参考,具体如下:
星际的战斗达到后面,地图里面的部队很多,如果我们把每个兵的图像动画和属性值作为一个对象的话,系统的内存里会消耗极大。
我们在玩的时候会发现,因为星际里面的种族只有三个,其实兵种只有几十个。
虽然每个独立的士兵剩余的血不同,但是同一兵种的图像动画是一样的,即使不同的玩家,只是不同的颜色。比如每个人族的机枪兵。
而且大多数玩家只用到常用的一些兵种,很多时候不会制造所有的兵种。
待解决的问题:把把兵种的图像动画共享。
思路:我们把每个兵种的图像动画建模作为对象,放入内存牛骨汤的功效与作用共享。一旦有某个画面用到这个兵种,只要把共享的图像动画拿出来,更改颜色就可以了。
享元(flyweight)模式示例:
<?php //机枪兵享元 class marineflyweight { //绘制机枪兵的图像动画,参数为状态,比如属于哪一个玩家 public function drawmarine($state) { //绘制机枪兵 } } //享元工厂 class flyweightfactory { //享元数组,用于存放多个享元 援助的意思private $flyweights; //获取享元的方法 public function getflyweight($name) { if (!ist($flyweights[$name])) { $flyweights[$name] = new $name."flyweight"; } return $flyweights[$name]; } } //初始化享元工厂 $flyweightfactory = new flyweightfactor绿色阅读y(); //当我们需要绘制一个机枪兵的时候,同时传递一个状态数组,里面包含剩余的血等等 $marine = $flyweightfactory->getflyweight("marine"); $marine->drawmarine($status);?>
用途总结:菜生活享元模式可以将需要共享的资源集中起来,统一管理,防止重复消耗。
实现总结:需要一个享元工厂管理共享的资源,比如上面的flyweig日本化妆品品牌大全htfactory。把所有共享的资源的生产全部交给个享元工厂。
本文发布于:2023-04-08 15:09:31,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3c6fdcfbba09f1ad7ebf9302c5ee5684.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php设计模式之享元模式分析【星际争霸游戏案例】.doc
本文 PDF 下载地址:php设计模式之享元模式分析【星际争霸游戏案例】.pdf
留言与评论(共有 0 条评论) |