[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: