老哥们,HarmonyOS鸿蒙Next中你们单例用哪种写法
老哥们,HarmonyOS鸿蒙Next中你们单例用哪种写法 这两种方式都能实现单例,我平时偷懒用的A。我看官方示例代码一般用的B。你们平时用的哪种,这两种有什么优缺点吗?
class A {
constructor() {
console.log('A init');
}
test() {
console.log('A.test()')
}
}
export default new A()
export class B {
private constructor() {
console.log('B init');
}
private static instance: B
static getInstance(): B {
if(!this.instance) {
this.instance = new B()
}
return this.instance
}
test() {
console.log('B.test()')
}
}
4 回复
B现在没有提示this
不可用吗?
Using “this” inside stand-alone functions is not supported
更多关于老哥们,HarmonyOS鸿蒙Next中你们单例用哪种写法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我一般用B
在HarmonyOS鸿蒙Next中,推荐使用双重检查锁定(Double-Checked Locking)来实现单例模式,以确保线程安全且高效。代码如下:
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
这种写法既能保证线程安全,又能避免不必要的同步开销,适合HarmonyOS开发。