Skip to main content

Dart面对对象

Dart构造函数

构造函数类型描述性能对比
默认构造函数 (Default Constructor)在没有定义构造函数时自动提供的无参构造函数性能最佳,无需额外开销
命名构造函数 (Named Constructor)允许类有多个有意义名字的构造函数性能良好,但每次调用需要匹配不同的构造函数
常量构造函数 (Constant Constructor)用于创建不可变对象,使用 const关键字性能最佳,编译时常量优化
工厂构造函数 (Factory Constructor)用于返回实例,可以是现有实例或新实例性能良好,但可能有条件检查的额外开销
重定向构造函数 (Redirecting Constructor)将构造函数调用重定向到同一个类中的另一个构造函数性能良好,初始化过程中有额外的函数调用开销
初始化列表构造函数 (Initializer List Constructor)在构造函数体之前初始化实例变量性能最佳,初始化列表直接赋值,无额外开销
重载构造函数 (Overloaded Constructor)Dart 不支持直接重载,但可通过命名构造函数实现性能良好,但每次调用需要匹配不同的构造函数
可选参数构造函数 (Optional Parameter Constructor)允许构造函数有命名或位置可选参数性能良好,但解析可选参数时有一定开销
混合构造函数 (Mixed Constructor)混合使用位置参数、命名参数和初始化列表性能良好,但涉及断言和可选参数时有一定开销

性能总结

  • 默认构造函数常量构造函数 具有最佳性能,尤其是常量构造函数,由于编译时优化,几乎没有运行时开销。
  • 命名构造函数重载构造函数 的性能也很好,但需要处理不同构造函数的匹配。
  • 工厂构造函数 的性能取决于内部逻辑,特别是在实现单例模式时,首次访问时可能有一定的开销,但之后的访问性能良好。
  • 重定向构造函数初始化列表构造函数 性能良好,但重定向构造函数有额外的函数调用开销。
  • 可选参数构造函数混合构造函数 由于需要解析可选参数和处理断言,有一定的性能开销,但总体性能仍然良好