Flutter 单例的写法及理解注释

网络上的写法很多,借鉴了其中的一种

主要还是看注释吧, 留作记录,防止那天脑子抽抽又给忘记了…


import 'package:dio/dio.dart';
import 'dart:io';
import 'dart:math';

/// -------------------------------
/// Created with Flutter Dart File.
/// User [email protected]
/// Date: 2020-08-14
/// Time: 14:58
/// Des: 网络库 Dio 的管理类
/// DioMananger
/// 1.提供Dio的基础配置
/// 2.提供 get/post基础功能
/// 3.提供 formData 上传文件基础功能
/// 4.提供 下载 的基础功能
/// 5.提供 取消 的基础功能
/// 6.待规划...
/// -------------------------------

class DioManager {
  /// *********************************** 实例变量 ***********************************

  Dio dio;
  String dioManageID;

  /// [DioManager]持有的 - 静态的final实例对象, 并进行初始化
  static final DioManager _dioManager = DioManager._instance();

  /// *********************************** 构造函数 ***********************************

  /// [DioManager]私有的 自定义命名式构造方法, Ps:instance不是关键字, 可随意命名
  /// 加 _ 表示该命名式构造函数为[DioManager]私有, 外部是不可调用的,
  /// 从而确保该命名式构造函数的使用, 仅可用来创建 _dioManager 这个静态的final实例对象
  DioManager._instance() {
    dio = Dio();
    dioManageID = "看看ID是啥" + Random().nextInt(1000).toString();
  }

  /// 工厂化的主构造函数 - 返回私有的实例对象
  /// 返回的就是唯一的实例 _dioManager
  factory DioManager() {
    return _dioManager;
  }

  /// *********************************** 实例方法 ***********************************

}


测试结果

          DioManager aa = DioManager();
          DioManager bb = DioManager();

          print(aa.dio);
          print(aa.dioManageID);
          print(bb.dio);
          print(bb.dioManageID);
          print(aa==bb);

log:

I/flutter ( 8630): Instance of 'DioForNative'
I/flutter ( 8630): 看看ID是啥918
I/flutter ( 8630): Instance of 'DioForNative'
I/flutter ( 8630): 看看ID是啥918
I/flutter ( 8630): true

你可能感兴趣的:(Flutter)