@ticatec/redis-client
Version:
A lightweight TypeScript wrapper around ioredis with singleton pattern support, mock Redis for testing, and abstract caching framework.
51 lines • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* 缓存数据管理器
* 使用单例模式管理不同类型的缓存数据实例
* 提供统一的注册和获取接口
* @class CachedDataManager
* @since 0.1.3
*/
class CachedDataManager {
/**
* 获取CachedDataManager单例实例
* @static
* @returns {CachedDataManager} CachedDataManager实例
*/
static getInstance() {
if (CachedDataManager.instance == null) {
CachedDataManager.instance = new CachedDataManager();
}
return CachedDataManager.instance;
}
/**
* 私有构造函数,确保单例模式
* @private
*/
constructor() {
this.map = new Map();
}
/**
* 注册缓存数据实例
* 将缓存数据类的构造函数和对应的实例进行关联注册
* @param {CachedDataConstructor} ctor - 缓存数据类的构造函数
* @param {AbstractCachedData<any>} instance - 缓存数据实例
* @returns {void}
*/
register(ctor, instance) {
this.map.set(ctor, instance);
}
/**
* 获取指定类型的缓存数据实例
* 根据构造函数获取对应的缓存实例,支持类型推断
* @template T - 缓存数据类型,必须继承AbstractCachedData
* @param {CachedDataConstructor} ctor - 缓存数据类的构造函数
* @returns {T | undefined} 缓存数据实例,不存在时返回undefined
*/
get(ctor) {
return this.map.get(ctor);
}
}
exports.default = CachedDataManager;
//# sourceMappingURL=CachedDataManager.js.map