Dart不支持函数重载,但支持任意命名的构造函数,这在实现单例模式时,可以写得非常简洁,如:
class People {
String? name;
int? age;
static var _instance = People._();
factory People() => _instance;
People._();
}
这里的_instance就是单例,People._()为构造函数,因为没有初始化内容,函数体就省略了。
如果此单例需要传参初始化成员变量,那么通常会添加一个initialize()方法,进行主动调用来初始化。
因为不能函数重载,所以也常会见到像People.fromMap(Map m)这样的构造函数。
之前有看到关于单例好,还是函数和变量全部使用static好,前者是运行时创建,后者是程序启动时创建,使用上和性能上没有啥区别。