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;

    }

  • 相关阅读:
    【转】点集 凸包
    【转】Word中使用Endnote很卡解决方案
    【转】一个程序员的面试经验之谈
    【转】 std list/vector sort 排序
    std::numeric_limits<int>::max() error C2589: '(' : illegal token on right side of '::' 解决办法
    【转】Log4cpp 封装
    【转】 log4cpp 的使用
    遍历目录 删除目录中包含指定字符的文件和文件夹
    mysql主从复制架构
    mysql分区功能详细介绍,以及实例
  • 原文地址:https://www.cnblogs.com/sundaysme/p/12588050.html
Copyright © 2011-2022 走看看