最近一直在学习dart语言,以及类的定义和使用。在偶然的机会,看到了factory开头定义的构造函数。所以查了一些资料来加深学习。
使用factory标识的类的构造函数,类似于设计模式中的单例模式,用来实例化只会创建一次的对象。具体使用参考如下的代码(来源:flutter 中factory(构造方法上的唯一对象) 与单例模式_Mars-xq的博客-CSDN博客_flutter工厂函数怎么用):
class Manager {
// 工厂模式 : 单例公开访问点
factory Manager() => _getInstance();
static Manager get instance => _getInstance();
// 静态私有成员,没有初始化
static Manager _instance;
// 私有构造函数
Manager._internal() {
// 初始化
}
// 静态、同步、私有访问点
static Manager _getInstance() {
if (_instance == null) {
_instance = new Manager._internal();
}
return _instance;
}
}
main() {
// 无论如何初始化,取到的都是同一个对象
Manager manager1 = new Manager();
Manager manager2 = Manager.instance;
Manager manager3 = new Manager();
Manager manager4 = Manager.instance;
print(identical(manager1, manager2)); //true
print(identical(manager1, manager3)); //true
print(identical(manager3, manager4)); //true
}
上述代码实际是为了测试,实际使用更多的定义如下:
class Manager {
// 工厂模式 : 单例公开访问点
factory Manager() {
final mgr = Manager._internal();
return mgr;
};
// 静态、同步、私有访问点
Manager._internal() {
// 初始化
}
}
main() {
Manager manager1 = new Manager();
}
这篇博客探讨了Dart语言中使用factory关键字定义的构造函数,它与设计模式中的单例模式相似,确保类只会实例化一次。通过示例代码展示了如何实现和使用factory构造函数创建单例对象,并在main函数中验证了多个实例实际上是同一个对象。这有助于理解Dart中的对象实例化和资源管理。

404

被折叠的 条评论
为什么被折叠?



