[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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效