【开发经验】在Flutter中使用dart的单例模式

创建一个单例的Manager类

class Manager {
  // 工厂模式
  factory Manager() =>_getInstance()
  static Manager get instance => _getInstance();
  static Manager _instance;
  Manager._internal() {
    // 初始化
  }
  static Manager _getInstance() {
    if (_instance == null) {
      _instance = new Manager._internal();
    }
    return _instance;
  }
}

调用

// 无论如何初始化,取到的都是同一个对象
Manager manager = new Manager();
Manager manager2 = Manager.instance;

作者:马嘉伦

链接:https://www.jianshu.com/p/720b968f4e2c

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

class UserManager {

// 如果一个函数的构造方法并不总是返回一个新的对象的时候,可以使用factory,

// 比如从缓存中获取一个实例并返回或者返回一个子类型的实例

// 工厂方法构造函数

factory UserManager() => _getInstance();

// instance的getter方法,通过UserManager.instance获取对象

static UserManager get instance => _getInstance();

// 静态变量_instance,存储唯一对象

static UserManager _instance;

// 私有的命名式构造方法,通过它可以实现一个类可以有多个构造函数,

// 子类不能继承internal不是关键字,可定义其他名字

UserManager._internal() {

// 初始化

user = new User(false, "", "", "", "", false, "", false, "", "");

}

// 获取对象

static UserManager _getInstance() {

if (_instance == null) {

// 使用私有的构造方法来创建对象

_instance = new UserManager._internal();

}

return _instance;

}

// 用户对象

User user;

}