鸿蒙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();
  }
}
相关推荐
韩仔搭建1 小时前
第二章:安卓端启动流程详解与疑难杂症调试手册
android·ui·娱乐
A-花开堪折1 小时前
Android7 Input(七)App与input系统服务建立连接
android
冰糖葫芦三剑客1 小时前
Android 自定义悬浮拖动吸附按钮
android
吃汉堡吃到饱1 小时前
【Android】从Choreographer到UI渲染(二)
android·ui
微信公众号:AI创造财富1 小时前
显示的图标跟UI界面对应不上。
android·ui
安和昂1 小时前
iOS 工厂模式
ios
aningxiaoxixi2 小时前
安卓 Audio Stream 类型
android
周胡杰2 小时前
组件导航 (Navigation)+flutter项目搭建-混合开发+分栏
数码相机·flutter·华为·电脑·harmonyos·鸿蒙
奔跑吧 android2 小时前
【android bluetooth 协议分析 01】【HCI 层介绍 3】【NUMBER_OF_COMPLETED_PACKETS 事件介绍】
android·bluetooth·hci·bt·gd·aosp13
龙湾开发2 小时前
轻量级高性能推理引擎MNN 学习笔记 03.在iOS运行MNN的示例
c++·学习·ios·图形渲染·mnn