一个简单的 lua 对象回收再利用方案
昨天在 review 我公司一个正在开发的项目客户端代码时,发现了一些坏味道。
客户端框架创建了一个简单的对象系统,用来组织客户端用到的对象。这些对象通常是有层级关系的,顶层对象放在一个全局集里,方便遍历。通常,每帧需要更新这些对象,处理事件等等。
顶层每个对象下,还拥有一些不同类别的子对象,最终成为一个森林结构,森林里每个根对象都是一颗树。对象间有时有一些引用关系,比如,一个对象可以跟随另一个对象移动,这个跟随就不是拥有关系。
这种设计方法或模式,是非常常见的。但是在实现手法上,我闻到了一丝坏味道。
由于类别很多,所以代码中充斥着模仿静态语言如 C++/C# 般的大量构造和析构函数。我一直对同事说 Lua 不是 C++ 大部分同事也认同我的观点,但落到实处,却逃不出过去的很多经验。
比如在这次具体问题上,为什么要实现一套带构造和析构函数的类别系统呢?
