鸿蒙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();
  }
}
相关推荐
没有了遇见19 分钟前
Android 通过 SO 库安全存储敏感数据,解决接口劫持问题
android
hsx66620 分钟前
使用一个 RecyclerView 构建复杂多类型布局
android
hsx66622 分钟前
利用 onMeasure、onLayout、onDraw 创建自定义 View
android
守城小轩23 分钟前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis
whysqwhw1 小时前
OkHttp平台抽象机制分析
android
杂雾无尘1 小时前
Swift 5.9 新特性揭秘:非复制类型的安全与高效
ios·swift·apple
hsx6662 小时前
Android 内存泄漏避坑
android
二二孚日2 小时前
自用华为ICT云赛道AI第三章知识点-MindSpore特性、MindSpore开发组件
人工智能·华为
whysqwhw2 小时前
OkHttp之okhttp-bom模块的分析
android
餐桌上的王子2 小时前
Android 构建可管理生命周期的应用(二)
android