HarmonyOS 鸿蒙Next 单例的正确写法
HarmonyOS 鸿蒙Next 单例的正确写法
单例的几种形式,麻烦给出几个官方建议写法,能多模块使用对象内存地址不变的
用到的有:
一: export default new DaoProcess()
二: 懒汉模式: public static getInstance(): Singleton (这种发现会出现内存地址不一样,也就是没法实现多模块公用单例)
三: 另外网上看到另一种异步锁形式的懒汉模式,需要加"use shared"和@Sendable
class Singleton {
private static instance: Singleton;
private constructor() {
// 私有构造函数,防止外部直接新建实例
}
public static getInstance(): Singleton {
if (!Singleton.instance) {
Singleton.instance = new Singleton();
}
return Singleton.instance;
}
}
这个例子中,单例对象的地址并不是同一个
更多关于HarmonyOS 鸿蒙Next 单例的正确写法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝;而HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
EntryAbility 中执行 SingleInstance.getInstance().init('ability 中初始化的值')
方法,相当于对Hap包中引用的Har包进行了初始化,而Hsp包中引用的Har并没有初始化。
如果您想要以共享的方式使用:可以将SingleInstance单例放在Hsp包中,Hap、Har包分别引用Hsp包。
如果您只想在Har中使用SingleInstance单例:可以在demo的基础上在Hsp包中新增初始化SingleInstance方法,导出后使用。
- 以上是初步分析结论,如有疑问可以展开回复,看到后会继续协助定位阻碍点。
- 开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中可以参考:https://gitee.com/scenario-samples/demo-index
更多关于HarmonyOS 鸿蒙Next 单例的正确写法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中实现单例模式,通常需要确保一个类只有一个实例,并提供一个全局访问点。以下是一个简单的示例,展示了在HarmonyOS中如何正确编写单例模式:
// Singleton.h
#ifndef SINGLETON_H
#define SINGLETON_H
class Singleton {
public:
// 禁用拷贝构造和赋值运算符
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
// 提供全局访问点
static Singleton& GetInstance() {
static Singleton instance; // 局部静态变量,保证只初始化一次
return instance;
}
// 其他成员函数
void SomeFunction() {
// 实现功能
}
private:
// 私有构造函数,防止外部实例化
Singleton() {}
};
#endif // SINGLETON_H
在这个示例中,Singleton
类的构造函数被声明为私有,从而防止了外部直接实例化。同时,拷贝构造和赋值运算符被删除,以确保类的唯一实例。GetInstance
方法提供了一个全局访问点,它返回一个对唯一实例的引用。这个方法内的静态局部变量instance
确保了在程序的生命周期内只会被初始化一次。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,