单例模式是平时开发中经常会用到的一个设计模式。我们经常会在代码里定义全局的管理类,一般都采用单例的实现。
java 里面实现单例的模式比较多,如双重锁,内部类,枚举等。
在flutter 中如何去实现一个单例呢?
flutter 是一个单线程模型,所以在实现单例的时候,不需要考虑加锁同步的问题,这样单例写起来就会简单很多,
所以我们只需要隐藏构造函数和增加一个获取实例的方法就可以了。
隐藏构造函数
隐藏构造函数,采用命名构造函数的方法,例如
Singleton._internal(){
}
这样在其他文件中,就无法直接实例化 Singleton 这个对象
提供获取实例的方法
实例获取的方法一般有两种:
- 利用工厂方法,构造函数返回固定的创建的对象
static Singleton _singleTone;
factory Singleton(){
if(_singleTone == null){
_singleTone = Singleton._internal();
}
return _singleTone;
}
- 类似java 提供getInstace 静态方法
static Singleton _singleTone;
static Singleton getInstance(){
if(_singleTone == null){
_singleTone = Singleton._internal();
}
return _singleTone;
}
是不是很简单?