flutter 关键字 factory (十二)

最近一直在学习dart语言,以及类的定义和使用。在偶然的机会,看到了factory开头定义的构造函数。所以查了一些资料来加深学习。

        使用factory标识的类的构造函数,类似于设计模式中的单例模式,用来实例化只会创建一次的对象。具体使用参考如下的代码(来源:flutter 中factory(构造方法上的唯一对象) 与单例模式_Mars-xq的博客-CSDN博客_flutter工厂函数怎么用):

class Manager {
  // 工厂模式 : 单例公开访问点
  factory Manager() => _getInstance();

  static Manager get instance => _getInstance();

  // 静态私有成员,没有初始化
  static Manager _instance;

  // 私有构造函数
  Manager._internal() {
    // 初始化
  }

  // 静态、同步、私有访问点
  static Manager _getInstance() {
    if (_instance == null) {
      _instance = new Manager._internal();
    }
    return _instance;
  }
}

main() {
  // 无论如何初始化,取到的都是同一个对象
  Manager manager1 = new Manager();
  Manager manager2 = Manager.instance;
  Manager manager3 = new Manager();
  Manager manager4 = Manager.instance;
  print(identical(manager1, manager2)); //true
  print(identical(manager1, manager3)); //true
  print(identical(manager3, manager4)); //true
}

 上述代码实际是为了测试,实际使用更多的定义如下:

class Manager {
  // 工厂模式 : 单例公开访问点
  factory Manager() {
     final mgr = Manager._internal();
     return mgr;
 };

  // 静态、同步、私有访问点
  Manager._internal() {
    // 初始化
  }
}

main() {
  Manager manager1 = new Manager();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值