【Dart】シングルトンを作成する

Dart
Dart
この記事は約3分で読めます。

ここでは、シングルトンクラスの作成方法を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?

コメント