[kotlin] 싱글톤 패턴과 동반 객체의 차이점

안녕하세요! 오늘은 싱글톤 패턴(Singleton Pattern)동반 객체(Companion Object)의 차이점에 대해 알아보겠습니다.

싱글톤 패턴(Singleton Pattern)

싱글톤 패턴은 어떤 클래스가 최대 한 번의 인스턴스만을 가지고 그 인스턴스에 접근할 수 있는 방법을 제공하는 디자인 패턴입니다. 이를 통해 어플리케이션 전역에서 공유되는 객체를 만들거나, 공통으로 사용되는 자원에 대한 동시 접근을 제어할 수 있습니다.

object Singleton {
    init {
        println("Singleton instance created")
    }

    fun doSomething() {
        println("Singleton is doing something")
    }
}

fun main() {
    Singleton.doSomething()
}

동반 객체(Companion Object)

동반 객체는 클래스의 인스턴스가 생성되기 전에 호출되는 클래스에 속한 일반 객체로, 클래스의 인스턴스를 만들지 않아도 해당 클래스의 메서드나 속성에 접근할 수 있습니다.

class MyClass {
    companion object {
        fun doSomething() {
            println("Companion object is doing something")
        }
    }
}

fun main() {
    MyClass.doSomething()
}

차이점

따라서, 싱글톤 패턴은 오직 한 개의 인스턴스만을 갖는 클래스를 구현하고자 할 때 사용하고, 동반 객체는 클래스의 메서드나 속성에 접근할 수 있도록 하는데 사용됩니다.

이상으로 싱글톤 패턴과 동반 객체에 대한 설명을 마치겠습니다. 감사합니다!

References: