php设计模式之原型模式分析【星际争霸游戏案例】
GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!
【 如果你想靠AI翻身,你先需要一个靠谱的工具! 】
本文实例讲述了php设计模式之原型模式。分享给大家供大家参考,具体如下:
我们一般用new来新增对象,不过很多时候新增一个对象需要一些工作。而星际里面往往会新增某些类的大量的对象,比如新增很多机枪兵和龙骑。
待解决的问题:我们能否减少new的使用,同时避免需要新增对象的时候,了解对象的类名。
思路:php5提供了克隆方法,我们可以新增一个对象,然后每次需要新增和她同类的对象,克隆他就可以了。
原型(Prototype)模式示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php //机枪兵类 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面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
laravel5.5框架的上传图片功能实例分析【仅传到服务器端】
这篇文章主要介绍了laravel5.5框架的上传图片功能,结合实例形式分析了laravel5.5框架将图片上传到服务器端的相关操作技巧与注意事项,需要的朋友可以参考下2019-12-12
最新评论