zoukankan      html  css  js  c++  java
  • 【开发经验】在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;

    }

  • 相关阅读:
    网页快捷键
    2016年5月3日15:55:23笔记
    【编程的乐趣-用python解算法谜题系列】谜题一 保持一致
    重温离散系列②之良序原理
    重温离散系列①之什么是证明
    浅谈栈和队列
    [leetcode]16-最接近的三数之和
    [leetcode] 4-寻找两个有序数组的中位数
    英语句子的基本结构【转】
    [leetcode] 11-盛最多水的容器
  • 原文地址:https://www.cnblogs.com/sundaysme/p/12588050.html
Copyright © 2011-2022 走看看