初次提交

This commit is contained in:
2026-07-20 10:56:52 +08:00
commit 7bcc0026e0
462 changed files with 50191 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
## ObjectPool — 通用对象池(Autoload: ObjectPool
## 权威来源:implementation_plan.md §2.1 Layer-0
##
## 使用约定:
## 1. 被池化对象必须实现 reset() 方法 (签名:func reset() -> void
## 2. 取出:pool.acquire() → 返回对象(内部已调 reset())
## 3. 归还:pool.release(obj)
extends Node
## 创建一个指定工厂和容量的对象池
func create_pool(capacity: int, factory: Callable) -> PoolInstance:
var p := PoolInstance.new()
p._factory = factory
for _i in capacity:
p._stack.append(factory.call())
return p
# ── PoolInstance 内部类(业务系统持有实例) ──────────────────────────────
class PoolInstance:
var _factory: Callable
var _stack: Array = []
func acquire() -> Object:
var obj: Object
if _stack.is_empty():
obj = _factory.call()
else:
obj = _stack.pop_back()
if obj.has_method("reset"):
obj.reset()
return obj
func release(obj: Object) -> void:
_stack.append(obj)
func get_available_count() -> int:
return _stack.size()
func drain() -> void:
_stack.clear()