【Kotlin/Android Studio】Companion objectとは?staticなシングルトン

この記事からわかること
- Android Studio/KotlinでCompanion objectの使い方
- シングルトンオブジェクトの作成方法
- staticな構造の作り方
\ アプリをリリースしました /
参考文献:公式リファレンス:Companion objects
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Companion objectsとは?
KotlinのCompanion objectsとはクラス内で静的なメンバー変数やメソッドを定義するためのオブジェクトです。Companion objects
で定義されたオブジェクトはシングルトンになり、アプリ内でインスタンスは1つだけになります。実装するにはcompanion object
キーワードを付与するだけです。
おすすめ記事:【GoF】23種類のデザインパターンとは?#Singletonパターン
これはJavaやSwiftでいうstatic
と同じような振る舞いをします。
クラス内ではCompanion object
は1クラス内に1つだけしか定義できません。クラス内など関係なくシングルトンを実装できるobject
キーワードであればクラス内でも複数定義することが可能です。
Companion object
とobject
の違いはアクセスする際に現れます。object
にはオブジェクト名を付与する必要があり、アクセスする際もオブジェクト名を挟む必要があります。一方Companion object
では名前を省略することができるのでDatabase
直下の静的プロパティや静的メソッドのようにアクセスすることができます。
もちろん名前をつけることも可能です。
その場合は以下のどちらでもアクセス可能です。
ちなみにインスタンス化用のcreate
メソッドのようなデザインパターンをFactory Methodと呼びます。
おすすめ記事:【Kotlin/Android Studio】Factory Methodデザインパターンとは?
シングルトンの使用例
Androidで使用できるローカルデータベースライブラリのRoomでもUserDatabase
クラスをシングルトンで実装するために以下のように実装することがあります。このようにシングルトンにすることで定型的なインスタンス化時の設定などを仕込むことができます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。