싱글턴 패턴에 대한 설명은 아래 링크를 참고하길 바란다.
https://codingjobrice.tistory.com/155
안드로이드에서 싱글턴 패턴 사용하기
안드로이드에서 단일 객체를 생성하기 위해서는 간단하게 object 키워드를 사용하면 된다.
object OneSingletonKt{
var uniqueInstance:Int = 10
}
fun main(){
println(OneSingletonKt.uniqueInstance)
}
uniqueInstance는 단일 객체가 된 것이다. 저렇게만 사용하면 간단하지만 이를 클래스 안에 담아보자.
class SingletonKt{
object OneSingletonKt{
var uniqueInstance:Int = 10
}
}
fun main(){
println(SingletonKt.OneSingletonKt.uniqueInstance)
}
이 것도 막 불편하지는 않지만 SingletonKt.OneSingletonKt.uniqueInstance 이 부분에서 보기 불편하다... 코틀린은 불편한 것 못참는 언어이다. 그래서 "companion" 이라는 키워드를 사용하면서 이 문제를 해결하였다. 코드를 살펴보자.
class SingletonKt{
object OneSingletonKt{
var uniqueInstance:Int = 10
}
companion object{
var uniqueInstance2:Int = 20
}
}
fun main(){
println(SingletonKt.uniqueInstance2)
}
불편함을 해결한 것을 볼 수 있다.
그러면 안드로이드에서는 언제 사용될까?
전역 변수, Retrofit 객체 생성 시, 데이터베이스 접근 시 등 다양한 경우에 사용되며 이는 하나하나 계속 추가해가겠다..
일단 firebase 객체 선언 시 사용한 코드를 예로 들겠다.
class MyApplication : MultiDexApplication(){
companion object {
lateinit var auth: FirebaseAuth
var email: String? = null
var user:User? = null
lateinit var db: FirebaseFirestore
fun checkAuth(): Boolean {
var currentUser = auth.currentUser
return currentUser?.let {
email = currentUser.email
currentUser.isEmailVerified
} ?: let {
false
}
}
}
override fun onCreate() {
super.onCreate()
auth = Firebase.auth
db = FirebaseFirestore.getInstance()
}
}
'안드로이드' 카테고리의 다른 글
[안드로이드 디자인 패턴] Repository Pattern (저장소 패턴) (1) | 2023.10.14 |
---|---|
[안드로이드] ViewModel (0) | 2023.10.09 |
[안드로이드 디자인 패턴] 안드로이드에서 observer pattern 적용 (setOnClickerListener) (0) | 2023.09.26 |