dart的单例模式

Dart不支持函数重载,但支持任意命名的构造函数,这在实现单例模式时,可以写得非常简洁,如:

class People {
  String? name;
  int? age;

  static var _instance = People._();
  factory People() => _instance;
  People._();
}

这里的_instance就是单例,People._()为构造函数,因为没有初始化内容,函数体就省略了。

如果此单例需要传参初始化成员变量,那么通常会添加一个initialize()方法,进行主动调用来初始化。

因为不能函数重载,所以也常会见到像People.fromMap(Map m)这样的构造函数。

之前有看到关于单例好,还是函数和变量全部使用static好,前者是运行时创建,后者是程序启动时创建,使用上和性能上没有啥区别。

发表于 2023年12月06日 18:55   评论:0   阅读:265  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo