ここでは、シングルトンクラスの作成方法を3つ紹介します。
共通している部分は、プライベートコンストラクタを使ってインスタンスを1つ作成して、それを使いまわしています。
プライベートコンストラクタは、最小で「Singleton._();」とすることもできます。
静的フィールド
プライベートコンストラクタと静的フィールドのみで構成されています。
class Singleton {
  Singleton._privateConstructor();
  static final Singleton instance = Singleton._privateConstructor();
}
void main() {
  Singleton obj1 = Singleton.instance;
  Singleton obj2 = Singleton.instance;
  print(identical(obj1, obj2));
}
ファクトリーコンストラクタ
プライベートコンストラクタと静的フィールド、ファクトリーコンストラクタで構成されています。
class Singleton {
  Singleton._privateConstructor();
  static final Singleton _instance = Singleton._privateConstructor();
  factory Singleton() {
    return _instance;
  }
}
void main() {
  Singleton obj1 = Singleton();
  Singleton obj2 = Singleton();
  print(identical(obj1, obj2));
}
ゲッター付き静的フィールド
プライベートコンストラクタと静的フィールドとゲッターを使って、構成されています。
class Singleton {
  Singleton._privateConstructor();
  static final Singleton _instance = Singleton._privateConstructor();
  static Singleton get instance => _instance;
}
void main() {
  Singleton obj1 = Singleton.instance;
  Singleton obj2 = Singleton.instance;
  print(identical(obj1, obj2));
}
参考

How do you build a Singleton in Dart?
The singleton pattern ensures only one instance of a class is ever created. How do I build this in Dart?

  
  
  
  

コメント