美文网首页
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