【开发经验】在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;

}

posted @ 2020-03-28 16:38  sundayswift  阅读(4488)  评论(0编辑  收藏  举报