ここでは、シングルトンクラスの作成方法を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));
}
参考
Attention Required! | Cloudflare
コメント