【步兵 经验篇】工厂模式 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~
之前
真爱无价,欢迎打赏~
这里写图片描述

0 0
原创粉丝点击