Language/kotlin

[Kotlin] Singleton

점냥 2020. 6. 1. 20:30
반응형

java와는 다르게 kotlin에서 singleton은 아주 간편하게 구현할 수 있다.

java의 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을 구현할 수 있다.


참고

반응형