[Flutter] 单例模式
单例模式
介绍
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
实现
普通实现
class Singleton {
///静态实例
static Singleton? _instance;
/// 私有的命名构造函数,在此处初始化
Singleton._internal();
///定义getInstance方法获取实例
static Singleton getInstance() {
///如果定义的实例为空,将构造函数赋值给实例
if (_instance == null) {
_instance = Singleton._internal();
}
///返回实例
return _instance!;
}
}
利用getter实现
class Singleton {
static Singleton? _instance;
Singleton._internal();
///用get直接获取实例
static get instance {
if (_instance == null) {
_instance = Singleton._internal();
}
return _instance;
}
}
利用工厂构造函数factory实现
class Singleton {
static Singleton? _instance;
Singleton._internal();
///工厂构造函数
factory Singleton() {
if (_instance == null) {
_instance = Singleton._internal();
}
return _instance!;
}
}
利用判空符??和延迟初始化符号late
class Singleton {
static Singleton? _instance;
Singleton._internal() {
_instance = this;
}
///判空符??
factory Singleton() => _instance ?? Singleton._internal();
}
class Singleton {
Singleton._internal();
factory Singleton() => _instance;
static late final Singleton _instance = Singleton._internal();
}