123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const __ = {
- poolDic: Symbol('poolDic')
- }
- /**
- * 简易的对象池实现
- * 用于对象的存贮和重复使用
- * 可以有效减少对象创建开销和避免频繁的垃圾回收
- * 提高游戏性能
- */
- export default class Pool {
- constructor() {
- this[__.poolDic] = {}
- }
- /**
- * 根据对象标识符
- * 获取对应的对象池
- */
- getPoolBySign(name) {
- return this[__.poolDic][name] || ( this[__.poolDic][name] = [] )
- }
- /**
- * 根据传入的对象标识符,查询对象池
- * 对象池为空创建新的类,否则从对象池中取
- */
- getItemByClass(name, className) {
- let pool = this.getPoolBySign(name)
- let result = ( pool.length
- ? pool.shift()
- : new className() )
- return result
- }
- /**
- * 将对象回收到对象池
- * 方便后续继续使用
- */
- recover(name, instance) {
- this.getPoolBySign(name).push(instance)
- }
- }
|