鸿蒙NEXT开发全局上下文管理类(ArkTs)

复制代码
type CacheValue = string | number | boolean | object;

/**
 * 全局上下文管理类,用于存储和管理全局数据。
 * author: 鸿蒙布道师
 * since: 2025/04/15
 */
export class GlobalContext {
  private static instance: GlobalContext;
  private _objects = new Map<string, CacheValue>();

  // 私有构造函数,防止外部实例化
  private constructor() {}

  /**
   * 获取全局上下文实例(单例模式)。
   * @returns 全局上下文实例
   */
  public static getContext(): GlobalContext {
    if (!GlobalContext.instance) {
      GlobalContext.instance = new GlobalContext();
    }
    return GlobalContext.instance;
  }

  /**
   * 存储数据到缓存中。
   * @param key - 数据键名
   * @param value - 数据值
   */
  public set<T extends CacheValue>(key: string, value: T): void {
    this._objects.set(key, value);
  }

  /**
   * 从缓存中获取数据。
   * @param key - 数据键名
   * @param defaultValue - 如果数据不存在时的默认值
   * @returns 缓存中的数据或默认值
   */
  public get<T extends CacheValue>(key: string, defaultValue?: T): T {
    return this._objects.has(key)
      ? (this._objects.get(key) as T)
      : (defaultValue as T);
  }

  /**
   * 检查缓存中是否存在指定的数据。
   * @param key - 数据键名
   * @returns 如果存在返回 true,否则返回 false
   */
  public has(key: string): boolean {
    return this._objects.has(key);
  }

  /**
   * 从缓存中移除指定的数据。
   * @param key - 数据键名
   */
  public remove(key: string): void {
    this._objects.delete(key);
  }

  /**
   * 清空所有缓存数据。
   */
  public clear(): void {
    this._objects.clear();
  }
}

代码如下:

TypeScript 复制代码
type CacheValue = string | number | boolean | object;

/**
 * 全局上下文管理类,用于存储和管理全局数据。
 * author: 鸿蒙布道师
 * since: 2025/04/15
 */
export class GlobalContext {
  private static instance: GlobalContext;
  private _objects = new Map<string, CacheValue>();

  // 私有构造函数,防止外部实例化
  private constructor() {}

  /**
   * 获取全局上下文实例(单例模式)。
   * @returns 全局上下文实例
   */
  public static getContext(): GlobalContext {
    if (!GlobalContext.instance) {
      GlobalContext.instance = new GlobalContext();
    }
    return GlobalContext.instance;
  }

  /**
   * 存储数据到缓存中。
   * @param key - 数据键名
   * @param value - 数据值
   */
  public set<T extends CacheValue>(key: string, value: T): void {
    this._objects.set(key, value);
  }

  /**
   * 从缓存中获取数据。
   * @param key - 数据键名
   * @param defaultValue - 如果数据不存在时的默认值
   * @returns 缓存中的数据或默认值
   */
  public get<T extends CacheValue>(key: string, defaultValue?: T): T {
    return this._objects.has(key)
      ? (this._objects.get(key) as T)
      : (defaultValue as T);
  }

  /**
   * 检查缓存中是否存在指定的数据。
   * @param key - 数据键名
   * @returns 如果存在返回 true,否则返回 false
   */
  public has(key: string): boolean {
    return this._objects.has(key);
  }

  /**
   * 从缓存中移除指定的数据。
   * @param key - 数据键名
   */
  public remove(key: string): void {
    this._objects.delete(key);
  }

  /**
   * 清空所有缓存数据。
   */
  public clear(): void {
    this._objects.clear();
  }
}
相关推荐
云水木石6 分钟前
Android 的下一个战场:Windows 应用与游戏?
android·windows·游戏
雨声不在31 分钟前
Android文字渐变的实现
android·textview
GoldenPlayer1 小时前
KTS语法
android
LorrestGump1 小时前
手游 iOS SDK 改用 CocoaPods 集成
ios
GoldenPlayer1 小时前
后台服务Service销毁逻辑+单例造成的内存泄露
android
GoldenPlayer1 小时前
自定义APK&gradle全局配置文件
android
うちは止水1 小时前
Android Hal层开发流程
android·hal
李小轰_Rex1 小时前
把手机变成听诊器!摄像头 30 秒隔空测心率 - 开箱即用
android·音视频开发
全栈开发圈1 小时前
新书速览|鸿蒙HarmonyOS 6开发之路 卷3:项目实践篇
鸿蒙·鸿蒙系统
为码消得人憔悴3 小时前
Android perfetto - 记录分析memory
android·性能优化