Flutter(dart) 中提供了一种十分方便的方式让我们来实现单列模式:
class Singleton {
static final Singleton _singleton = Singleton._internal();
factory Singleton() {
return _singleton;
}
Singleton._internal();
}
Java中单例模式实现方式就比较多了,分为线程安全和非线程安全的,一般来讲,大部分场景都是需要线程安全的写法。我们常常使用的StringBuffer 以及 StringBuilder 就是线程安全(前者)和非线程安全带的(后者).以下大部分搬运自菜鸟教程,笔者也赞同最后一种方式的实现。
1.懒汉式,非线程安全:
是否 Lazy 初始化:是
是否多线程安全:否
实现难度:易
优缺点:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁 synchronized,所以严格意义上它并不算单例模式。
这种方式 lazy loading 很明显,不要求线程安全,在多线程不能正常工作。
public class Singleton {
pr