美文网首页
Dart:关于构造方法的常见实践

Dart:关于构造方法的常见实践

作者: 李小轰 | 来源:发表于2021-07-14 14:26 被阅读0次

记录一下项目中常用的构造函数实现方式:

  • 带传参的构造方法:
  1. 使用 this.param 方式可省略方法体和赋值操作
  2. 使用 xxx.函数名():Filed1=xxx,... 这种方式在构造方法中进行变量初始化
class Model {
  int paramA;

  //这种写法可省略方法体和赋值操作
  Model(this.paramA);

  //命名构造函数
  Model.newInstance(int paramA) : paramA = paramA;
  //在构造函数后直接:拼接属性赋值操作,可以在构造的时候初始化一些参数值
}

  • const 构造方法:
  1. 使用const修饰构造方法时,需要所有的成员属性使用final修饰
  2. 好处:当你调用多个一样参数的常量构造时,你获取的是同一个对象,从而节省内存开销和运行效率
class ConstModel {
  final int paramA;

  const ConstModel(this.paramA);
}

  • factory 构造方法:

工厂构造函数不需要每次构建新的实例,且不会自动生成实例,而是通过代码来决定返回的实例对象,可以把 factory 方法理解成一个中转站

class FactoryModel {

  static final HashMap<String, FactoryModel> _cachedMap = HashMap<String, FactoryModel>();

  FactoryModel._newInstance();

  factory FactoryModel(String key) {
    if (_cachedMap.containsKey(key)) {
      return _cachedMap[key];
    } else {
      _cachedMap[key] = FactoryModel._newInstance();
      return _cachedMap[key];
    }
  }
}

我们常用 factory 的方式来实现单例:

class Singleton {

  static final Singleton _singleton = Singleton.internal();
  factory Singleton() => _singleton;

  Singleton.internal();
}
说到构造方法,顺道记录下 final 和 const 的区别:
  1. const 编译时常量
  2. final 第一次复制后不可更改

相关文章

网友评论

      本文标题:Dart:关于构造方法的常见实践

      本文链接:https://www.haomeiwen.com/subject/zisypltx.html