[Dart] The factory constructor implements the singleton pattern and passes parameters

// https://gist.github.com/theburningmonk/6401183#gistcomment-2903680
class MyClass {
  num instanceVar;
  static num start;
  static final MyClass _singleton = new MyClass._internal();

  factory MyClass(num startparam) {
    start = startparam;
    return _singleton;
  }

  MyClass._internal() {
    if (instanceVar == null) {
      instanceVar = start;
    } else {
      instanceVar++;
    }
  }

  // rest of the class
}

main() {
// consuming code
  MyClass myObj1 = MyClass(1); // get back the singleton
  print('myObj1=${myObj1.instanceVar}');

// another piece of consuming code
  MyClass myObj2 = MyClass(2); // still getting back the singleton
  print('myObj2=${myObj2.instanceVar}');
}

Guess you like

Origin www.cnblogs.com/teemwu/p/12716171.html