【步兵 经验篇】工厂模式 in Game
来源:互联网 发布:贪玩蓝月附灵数据 编辑:程序博客网 时间:2024/04/29 18:16
【步兵 经验篇】工厂模式 in Game by EOS.
最近在看《Effective Java中文版 第2版》,密码 968n,虽然是java的,
但是讲的很有深度,是不错的一本书,而且语言直接是都是相通的。
可以看一下java基础,写点小demo熟悉一下,然后再看看此书。
说了辣么多,然而还是用lua讲=、=,脚本写起来就是方便
举个栗子
GameElement = { Player = 1, --玩家 Monster = 2, --怪 NPC = 3, --NPC Text = 4, --伤害、暴击等 Effect = 5, --特效 Collect = 6, --采集物 Drop = 7, --掉落物品 Shadow = 8, --阴影(可单独拿出来做优化) --当然也可以直接用属性字典{type, id, model, name, ...} new = function(elementType, id) local ret = GameElement.get(elementType, id) if ret then return ret end if elementType == GameElement.Player then ret = PlayerElement.new(id) elseif elementType == GameElement.Monster then ret = MonsterElement.new(id) --其他省略 end --根据不同类型放入不同的表,例如 --ElementMgr[GameElement.Player] = {} Mgr.ElementMgr.addElemet(ret.getType(), ret) return ret end, get = function(elementType, id) return Mgr.ElementMgr.getElemet(elementType, id) end, kill = function(elementType, id) --清除指定类型,指定id end, killById = function(id) --清除所有类型,指定id end, clearByType = function(elementType) --清除指定类型,全部id end, ------------以上三个方法可以统一调用 Element:killed()--------------}local player = GameElement.new(GameElement.Player, serverId)--player:该干啥干啥local oldPlayer = GameElement.get(GameElement.Player, serverId)
像这样 通过统一接口,来生成不同的数据,而且隐藏了内部的函数复杂的逻辑,
降低了耦合,让代码看上去更加 统一和简介,而且也方便管理。
代码管理
这里说的不是代码的版本控制,而是单单只代码或者说代码逻辑的管理。
(ps:我的项目是用svn+云盘来管理的,git什么好麻烦,还是svn人性化)
写代码写的越久,就会越发现,对代码的掌控力很重要,能够快速的定位到代码,
而且直观的管理数据,对项目而言,可能比运行效率更加重要。
当然这样对开发的效率和代码的维护都是有意的。
(ps:当然代码写太烂的,该练还是要练,不要害怕重构。一时费事,可能受益良久,
比如戳中了你的某根弦,刷的一下就觉得写代码信手拈来=、=)
结语
想提过代码水平,代码量是必不可少的,包括写和读。
看别人的代码,学的是最快的,但是不写过是不会发现什么缺陷,
或者是不清楚在什么地方用什么样的方式,来管理代码。
比如最近的项目,事件驱动虽然是不错的方式,但是什么东西都用事件来写,
就感觉整个逻辑变成了蜘蛛网,纵横交错。(恶心干呕,这是慢性咽炎的症状)
比如ui。直接UIMgr:show、hide、close之类来控制界面不就好了么,
非要,注册个Listener,来监听OpenXXLayer事件,然后这fire一下,
那fire一下,然后那么多界面在一起就是 fire fire fire ,突突突~啊~ 突突突~
this is a war (捂脸 流泪.gif)
希望大家能写多看代码,多多交流,不要在摸黑的路上越走越远~
可以加群交流,群号左上角~
See Again~
之前
真爱无价,欢迎打赏~
- 【步兵 经验篇】工厂模式 in Game
- 【步兵 经验篇】组件模式的特点
- 【步兵 经验篇】 链式编程
- 【步兵 经验篇】新手引导
- 【步兵 经验篇】one step
- 【步兵 经验篇】关于脚本语言的优势
- 【步兵 经验篇】图片加密之我见
- 【步兵 经验篇】状态机(续)
- 【步兵 经验篇】代码中的文件夹
- 【步兵 c++】组件模式--基础篇
- 【步兵 经验篇】游戏常用的三个处理
- 【步兵 shader】基础篇
- 【步兵 shader】封装篇
- 【步兵 经验篇】 快速开发之我来带你飞
- 【步兵 lua】匹配模式 之 花式split
- Thinking in java 工厂模式的学习
- 【步兵 工具篇】 Excel 转 json
- 【步兵 工具篇】二进制读写 源码
- 习题32 循环和列表
- 唐巧总结的40个国人iOS技术博客
- junit4简单入门
- 微信端调起支付宝支付
- 高手
- 【步兵 经验篇】工厂模式 in Game
- 机器学习第六课:聚类
- 对希拉里泄露邮件进行简单分析的结果
- 【Android】Opencv4Android 调用Highgui读取图片出错
- where group by联合使用
- BeagleBone机器人开发准备工作
- BaseAdapter实现ListView
- Jquery选择器总结
- 有趣的Autolayout示例-Masonry实现