素材巴巴 > 程序开发 >

Dart中的factory关键字用法

程序开发 2023-09-07 08:22:38

factory简介

在Dart中,factory关键字用于定义工厂构造函数。它与普通的构造函数有以下几个区别:

  1. factory构造函数的调用可以返回子类型或其它类型的实例。普通构造函数总是返回其包含的类型的实例。
  2. factory构造函数可以有返回值。普通构造函数的返回值永远是其包含的类型的实例。
  3. factory构造函数不需要初始化包含类型的所有字段。普通构造函数需要确保所有非空的字段都有值。

使用factory的好处

  1. 可以根据传入的参数返回其它类型的实例,增加灵活性。
  2. 不需要全部初始化包含类型的字段,可以决定返回的实例属性,增加灵活性。
  3. 可以有返回值,不仅限于返回包含类型的实例,增加灵活性。
    一般来说,当你的构造函数不完全按照包含类型的定义来初始化实例时,或者可能返回其它类型的实例,那么应该把它定义为factory构造函数。

实例

这里有一个示例可以说明factory构造函数的用法:

class Image {final String name;Image(this.name);
 }class ImageCache {static Map _cache = {};factory ImageCache.fromName(String name) {if (_cache.containsKey(name)) {return _cache[name];} else {final image = Image(name);_cache[name] = image;return image;}}
 }
 

这里我们有:

  1. 根据name的不同可以返回Image或ImageCache的实例,增加灵活性。
  2. 不必要每次调用都创建新的Image实例,可以重用缓存中的实例,优化性能。
  3. 有返回值Image或ImageCache的实例,而不仅限于ImageCache的实例。
    这是一个典型的使用factory构造函数的例子,用来进行实例重用和灵活的返回值。
    image.png

标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。