From 8adce14b4300a6a128e1909380a872c0b322b460 Mon Sep 17 00:00:00 2001 From: GwWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Sun, 11 Jan 2026 21:12:45 +0800 Subject: [PATCH] =?UTF-8?q?docs(pool):=20=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=E6=B1=A0=E7=B3=BB=E7=BB=9F=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建了对象池系统的完整技术文档 - 详细说明了核心组件包括IPoolableObject接口和IObjectPoolSystem接口 - 描述了AbstractObjectPoolSystem抽象类的实现机制 - 解释了对象池的设计特点和工作原理 - 列出了对象池系统的典型使用场景 - 提供了完整的API参考和生命周期管理说明 --- GFramework.Core/pool/README.md | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 GFramework.Core/pool/README.md diff --git a/GFramework.Core/pool/README.md b/GFramework.Core/pool/README.md new file mode 100644 index 0000000..2e5527e --- /dev/null +++ b/GFramework.Core/pool/README.md @@ -0,0 +1,52 @@ +# 对象池系统 (Object Pool System) + +## 概述 + +GFramework 的对象池系统是一个高效的内存管理机制,旨在减少垃圾回收(GC)压力,通过复用对象实例来提高应用程序性能。该系统实现了对象的创建、获取、释放和销毁的完整生命周期管理。 + +## 核心组件 + +### IPoolableObject 接口 + +定义了可池化对象的行为规范,所有池化对象都需要实现此接口: + +- `OnAcquire()`: 当对象从池中获取时调用,用于初始化或重置对象状态 +- `OnRelease()`: 当对象被放回池中时调用,用于清理对象状态 +- `OnPoolDestroy()`: 当对象池被销毁时调用,用于执行最终清理 + +### IObjectPoolSystem 接口 + +定义了对象池系统的基本操作: + +- `Acquire(TKey key)`: 从指定键的对象池中获取一个对象 +- `Release(TKey key, TObject obj)`: 将对象释放回指定键的对象池 +- `Clear()`: 清空所有对象池 + +### AbstractObjectPoolSystem 抽象类 + +实现了 IObjectPoolSystem 接口的具体逻辑: + +- 使用字典存储多个对象池,以键区分不同的对象池 +- 提供获取和释放对象的方法 +- 通过抽象方法 Create 让子类决定如何创建对象 +- 在系统销毁时自动清理所有对象池 + +## 设计特点 + +1. **类型安全**: 使用泛型参数确保类型安全 +2. **多池管理**: 支持使用不同键管理多个对象池 +3. **生命周期管理**: 通过接口方法精确控制对象的生命周期 +4. **内存效率**: 通过复用对象减少内存分配和垃圾回收 + +## 工作原理 + +1. **获取对象** (Acquire): 如果池中有可用对象,则从池中取出;否则创建新对象 +2. **释放对象** (Release): 调用对象的 OnRelease 方法后将其放回池中 +3. **创建对象**: 通过抽象方法 Create 由子类实现具体的创建逻辑 +4. **清理**: 在系统销毁时调用 OnDestroy 方法清理所有对象池 + +## 使用场景 + +- 频繁创建和销毁的临时对象 +- 高性能要求的系统,需要减少GC压力 +- 对象创建成本较高的情况 \ No newline at end of file