我已经为此挣扎了很长一段时间。
当然,我目前所知道的是,当您只需要一个对象和一个名为.fromJson的构造函数时,当您需要创建多个实例时,您应该使用工厂或静态fromJson。
所以..。什么时候??当我们需要一个实例时,当我们需要多个实例时?
我现在正在为API响应创建一个模型类,我对是否使用工厂感到非常困扰。
发布于 2021-09-27 19:03:24
工厂构造函数允许返回已经创建的实例。它允许我们轻松地制作单色和多色调。从调用端看,它看起来像通常的构造函数,但从内部实现来看,它是不同的。而且,工厂构造函数不会强制您只返回一个实例(对象)。您可以根据需要创建任意多个。它允许返回已经创建的实例。这就是返回新实例的普通构造函数的不同之处。因此,此功能为我们提供了一些灵活性,在某些情况下还提高了性能。
举个例子:
class Logger {
static Logger _instance;
Logger._() {
print('Logger created');
}
factory Logger() {
return _instance ??= Logger._();
}
void log(String msg) => print('${DateTime.now()}: $msg');
}
void main() {
A().initialize();
B().initialize();
}
class A {
Logger _logger;
void initialize() {
_logger = Logger();
_logger.log('A initialized');
}
}
class B {
Logger _logger;
void initialize() {
_logger = Logger();
_logger.log('B initialized');
}
}如果我们运行这段代码,它将产生如下输出:
Logger created
2021-09-27 21:59:23.887: A initialized
2021-09-27 21:59:23.887: B initialized在这里,您可以看到只创建了Logger类的一个实例。尽管来自调用方,我们已经请求创建两个实例。
在大多数情况下,如果你的任务是为API response创建一个模态类,一个带有静态fromJson方法的普通构造函数就足够了。
https://stackoverflow.com/questions/69345989
复制相似问题