美文网首页
13.Dart工厂构造函数的简单使用

13.Dart工厂构造函数的简单使用

作者: 凯司机 | 来源:发表于2020-05-26 07:03 被阅读0次

main(List<String> args) {

  Person._nameCache;

  Person._colorCache;

  // final保证对象不会随便的创建和被赋值

  final p1 = Person.withName("ksj");

  final p2 = Person.withName("ksj");

  print(identical(p1, p2));

  // 返回结构一致true

  // 通过缓存来判断对象是否创建过,来保证对象的一致性——最大特点手动返回一个对象

  // 缺点:多占内存,但是降低了多次创建对象和销毁

}

// class Person {

//  final String name;

//  const Person(this.name);

  // 工厂构造函数需要自己手动的去返回一个对象

  // 常用构造函数不用自己手动的返回一个对象

// }

class Person {

  String name;

  String color;

  // 类属性、记录的是name的缓存

  static final Map<String, Person> _nameCache = {};

  // 记录缓存,手动返回属性

  static final Map<String, Person> _colorCache = {};

  // 默认有构造函数、但是你手动生成的时候,默认就不生成构造函数了,需要手动生成

  Person(this.name, this.color);

  factory Person.withName(String name) {

    if (_nameCache.containsKey(name)) {

      return _nameCache[name];

    } else {

      final p = Person(name, "default");

      _nameCache[name] = p;

      return p;

    }

  }

}

相关文章

网友评论

      本文标题:13.Dart工厂构造函数的简单使用

      本文链接:https://www.haomeiwen.com/subject/hqnpahtx.html