gpt4 book ai didi

dart - 为什么在从 map 结构构造新实例时使用工厂?

转载 作者:行者123 更新时间:2023-12-04 11:18:38 26 4
gpt4 key购买 nike

我试图真正了解来自 API 的 JSON 数据流,直到我可以将其作为对象使用。
现在我想我已经准备好了一切,我唯一的问题是为什么我看到有些人在使用命名构造函数 .fromJson 时使用工厂。
根据 Dart 文档:

we use the factory keyword when we implement a constructor thatdoesn't always create a new instance of your class.


但是在这种情况下,我们总是会在使用 fromJson 时创建一个实例,对吗?
那么为什么有些人使用:
   factory User.fromJson(Map<String, dynamic> json) =>
User(name: json['name'], alias: json['alias']);
而不是更合理的:
  User.fromJson(Map<String, dynamic> json)
: name = json['name'],
alias = json['alias'];
非常感谢您的任何声明。

最佳答案

使公共(public)构造函数成为工厂可能是一种防御性设计,即使在技术上不需要。
如果你生成一个构造函数,那么某个地方的某个人可能会用一个子类扩展你的类,并将他们的构造函数转发给你的生成构造函数。
到那时,将您的构造函数变成工厂就变成了一个突破性的变化。如果您决定需要更多验证并且如果构造函数是工厂会变得更方便,那么您现在无法进行更改。
生成公共(public)构造函数是一个 promise (使其成为 const ),因此除非您确实想要,否则最好不要这样做。不要偶然或仅仅因为可以公开生成(或 const)构造函数。如果您打算通过该构造函数将该类用作父类(super class),请执行此操作。否则,只公开工厂构造函数并保持生成构造函数私有(private)会更安全。

关于dart - 为什么在从 map 结构构造新实例时使用工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64838782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com