😸
Dart で Singletonの作成【知っている人向け】
分かっている人(というか自分)向けのメモです。詳細は他の方の記事をご参照ください。
作成
class SingletonClass {
static final SingletonClass _instance = SingletonClass._internal();
SingletonClass._internal();
factory SingletonClass() {
return _instance;
}
void method(){}
}
使用
SingletonClass instance = SingletonClass();
SingletonClass().method();
検索してみて
factory 内でinstanceがnullのときに、初期化するというソースが多かった。それをJavaなどマルチスレッドの言語で実施すると、相当いいタイミング(nullだったので作成している間に、別のスレッドでnullを確認した場合)で二つのinstanceができる可能性があった。もしかすると、Dartでは発生しない可能性(シングルスレッドだから大丈夫とか、factoryが同時に実行されないとか、あるかもしれない)もあるが、staticで初期化する方が安全だと考える。
Discussion