首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter,何时使用工厂fromJson和构造函数fromJson

Flutter,何时使用工厂fromJson和构造函数fromJson
EN

Stack Overflow用户
提问于 2021-09-27 11:43:04
回答 1查看 56关注 0票数 0

我已经为此挣扎了很长一段时间。

当然,我目前所知道的是,当您只需要一个对象和一个名为.fromJson的构造函数时,当您需要创建多个实例时,您应该使用工厂或静态fromJson。

所以..。什么时候??当我们需要一个实例时,当我们需要多个实例时?

我现在正在为API响应创建一个模型类,我对是否使用工厂感到非常困扰。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-27 19:03:24

工厂构造函数允许返回已经创建的实例。它允许我们轻松地制作单色和多色调。从调用端看,它看起来像通常的构造函数,但从内部实现来看,它是不同的。而且,工厂构造函数不会强制您只返回一个实例(对象)。您可以根据需要创建任意多个。它允许返回已经创建的实例。这就是返回新实例的普通构造函数的不同之处。因此,此功能为我们提供了一些灵活性,在某些情况下还提高了性能。

举个例子:

代码语言:javascript
复制
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');
  }
}

如果我们运行这段代码,它将产生如下输出:

代码语言:javascript
复制
Logger created
2021-09-27 21:59:23.887: A initialized
2021-09-27 21:59:23.887: B initialized

在这里,您可以看到只创建了Logger类的一个实例。尽管来自调用方,我们已经请求创建两个实例。

在大多数情况下,如果你的任务是为API response创建一个模态类,一个带有静态fromJson方法的普通构造函数就足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69345989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档