Flutter 如何实现一个单例

1,504 阅读1分钟

单例模式是平时开发中经常会用到的一个设计模式。我们经常会在代码里定义全局的管理类,一般都采用单例的实现。

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;
  }

是不是很简单?