记录一下项目中常用的构造函数实现方式:
-
带传参的构造方法:
- 使用 this.param 方式可省略方法体和赋值操作
- 使用 xxx.函数名():Filed1=xxx,... 这种方式在构造方法中进行变量初始化
class Model {
int paramA;
//这种写法可省略方法体和赋值操作
Model(this.paramA);
//命名构造函数
Model.newInstance(int paramA) : paramA = paramA;
//在构造函数后直接:拼接属性赋值操作,可以在构造的时候初始化一些参数值
}
-
const 构造方法:
- 使用const修饰构造方法时,需要所有的成员属性使用final修饰
- 好处:当你调用多个一样参数的常量构造时,你获取的是同一个对象,从而节省内存开销和运行效率
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 的区别:
- const 编译时常量
- final 第一次复制后不可更改
网友评论