CenterBase
Coding Style wiki
using OxGFrame.CenterFrame;
核心设计概念
CenterBase<TCenter, TClass> 采用了 CRTP (Curiously Recurring Template Pattern) 模式与 Thread-Safe Singleton 设计。它建立了一个类型安全的缓存池,让所有继承自此类的中心点都能拥有统一的对象管理逻辑。
Default APIs (静态调用接口)
以下方法皆为静态接口,开发者可直接透过子类别名称调用(例如:YourCenter.Add<YourClass>())。
Register (注册/新增)
将对象实例化并加入缓存管理中。
- Add<UClass>()
- 以
UClass的类型 Hash 作为 ID 进行注册。
- 以
- Add<UClass>(int id)
- 指定特定的
id注册UClass实例。
- 指定特定的
- Add(int id, TClass @class)
- 直接将已存在的实例以指定
id加入缓存。
- 直接将已存在的实例以指定
提醒 使用泛型注册时,该类别必须具备无参数构造函数(new())。
Remove (删除/卸载)
从缓存池中移除对象。
- Delete<UClass>()
- 根据类型移除对应的实例。
- Delete(int id)
- 根据指定
id移除实例。
- 根据指定
- DeleteAll()
- 清空缓存池中所有的对象。
Get (寻找/获取)
从缓存池中检索对象并自动转型。
- Find<UClass>()
- 根据类型寻找对象。
- Find<UClass>(int id)
- 根据指定
id寻找对象,并强 制转换为UClass类型。
- 根据指定
内部实作细节
Thread-Safe Singleton
内置双重检查锁定(Double-Checked Locking),确保在多执行绪环境下 GetInstance() 的唯一性与安全性。
Cache System
底层使用 Dictionary<int, TClass> 进行储存:
- Key: 对象的唯一识别码(ID 或 Type Hash)。
- Value: 实例化后的对象。
重要 CenterBase 仅负责对象的存储生命周期,若管理的对象涉及 Unity 资源(如 Prefab),请配合 AssetLoaders 进行正确的销毁处理。