namespace GFramework.Core.Abstractions.Pool; /// /// 对象池系统接口,定义了对象池的基本操作 /// /// 池键的类型 /// 池中对象的类型,必须实现IPoolableObject接口 public interface IObjectPoolSystem where TObject : IPoolableObject where TKey : notnull { /// /// 从对象池中获取一个对象实例 /// /// 对象池的键 /// 池中的对象实例,如果池中没有可用对象则创建新实例 TObject Acquire(TKey key); /// /// 将对象释放回对象池 /// /// 对象池的键 /// 要释放的对象 void Release(TKey key, TObject obj); /// /// 清空所有对象池 /// void Clear(); /// /// 获取指定池的当前大小 /// /// 对象池的键 /// 池中可用对象的数量 int GetPoolSize(TKey key); /// /// 获取指定池的活跃对象数量 /// /// 对象池的键 /// 已被获取但未释放的对象数量 int GetActiveCount(TKey key); /// /// 设置指定池的最大容量 /// /// 对象池的键 /// 池中保留的最大对象数量。超过此数量时,释放的对象将被销毁而不是放回池中。设置为 0 表示无限制。 void SetMaxCapacity(TKey key, int maxCapacity); /// /// 预热对象池,提前创建指定数量的对象 /// /// 对象池的键 /// 要预创建的对象数量 void Prewarm(TKey key, int count); /// /// 获取指定池的统计信息 /// /// 对象池的键 /// 池的统计信息 PoolStatistics GetStatistics(TKey key); }