java와는 다르게 kotlin에서 singleton은 아주 간편하게 구현할 수 있다.
Object 기본 사용
object A
var a : A = A
kotlin의 object
키워드는 Singleton
을 보장해준다. 한 줄이여서 너무 간편하다.. 하지만 object
는 생성자를 지원하지 않기 때문에 만약 Singleton을 생성할 때 매개변수가 필요하다면 사용할 수 없다.
companion object로 구현
class A {
companion object {
@Volatile private var instance: Singleton? = null
@JvmStatic fun getInstance(context : Context): A =
instance ?: synchronized(this) {
instance ?: Singleton(context).also {
instance = it
}
}
}
}
companion object
는 java에서의 static
과 유사하게 클래스당 하나임을 보장하기 때문에 위 방법으로 intance 객체의 Singleton을 구현할 수 있다.
참고
반응형
'Language > kotlin' 카테고리의 다른 글
[Kotlin] Enum의 새로운 values Function 등장, entries (0) | 2024.05.05 |
---|---|
[Kotlin] 데이터 표현을 위한 Data Object (0) | 2024.03.26 |
[Kotlin] - 기본문법 2 (0) | 2020.02.10 |
Kotlin의 유용한 함수들 - let, apply, run, with (0) | 2020.02.10 |
[Kotlin] Kotlin을 왜 배워야 할까요? (0) | 2020.02.10 |