## 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()