【发布时间】:2019-01-19 04:37:31
【问题描述】:
我刚开始学习 Dart,我想知道 factory constructor 与独立工厂类或函数相比有什么优势?
当我们添加新的派生类时,我们需要更改抽象类内部的工厂方法,如果我们有它的代码就可以,但是如果它带有库 - 工厂构造函数就变得无用了吗?
或者有一些机制可以用派生类的信息更新工厂方法?如果是这样,请分享一个例子。
【问题讨论】:
我刚开始学习 Dart,我想知道 factory constructor 与独立工厂类或函数相比有什么优势?
当我们添加新的派生类时,我们需要更改抽象类内部的工厂方法,如果我们有它的代码就可以,但是如果它带有库 - 工厂构造函数就变得无用了吗?
或者有一些机制可以用派生类的信息更新工厂方法?如果是这样,请分享一个例子。
【问题讨论】:
factory 可以让你返回子类型,这非常有用。
例如,您可以拥有 factory MyClass.empty => const _EmpytMyClass() 并返回一个没有存储空间的简单实现。
如果你想拥有你的类的规范实例,你也可以使用它来返回缓存值。
您也可以使用factory 来调用方法来创建您的实例。见这里:https://github.com/dart-lang/json_serializable/blob/4033f6ad4e3c96bc2ed16d93c0995e11fcfe42df/example/lib/example.dart#L29
【讨论】:
abstract class 的lib 和一些具体的实现。抽象类有factory costructor 可以构造这些具体的实现。当我添加自己的实现时,我需要更新该工厂构造函数以支持我的类。有没有办法做到这一点,或者我需要为此实现独立功能?