TIl. kotlin 싱글톤 패턴

싱글톤 패턴이란 ?

매번 새로운 인스턴스를 생성하지 않고 오직 하나의 객체만 사용할 때 사용합니다. 즉, 클래스를 정의하면서 동시에 인스턴스(객체)를 생성하는 것입니다.

  • 어떤 클래스의 인스턴스는 오직 하나임을 보장하며, 이 인스턴스에 접근할 수 있는 전역적인 접촉점을 제공하는 디자인 패턴이다.

  • 애플리케이션의 시작부터 종료까지 한 번의 생성으로 고정된 메모리 영역을 가지기 때문에 메모리를 효율적으로 사용할 수 있다.

  • 싱글턴의 인스턴스는 전역적으로 사용되기 때문에 다른 클래스의 인스턴스들이 데이터를 공유 변경이 가능하다는 장점이 있다.

  • 쉽게 말하면 한 번의 선언으로 모든 클래스에서 전역으로 사용 가능한 필드나 메서드를 만드는 것(아무데서나 접근 가능한 필드나 메소드)

예제 😃

코틀린은 언어 자체에서 기본적으로 싱글턴을 지원합니다.

fun main() {
	println(Data.a1)
	println(dataRepository.a1)
}

object Data {
    
   var a1: String = "sls"
}

val dataRepository = Data

다른 예제


object Github{
	private const val BASE_URl = "https://api.github.com"
	
	private val retrofit: Retrofit = Retrofit.Builder().baseUrl(BASE_URl)
	.addConverterFactory(GsonConverterFactory.create()).build()
	
	val service:GithubService = retrofit.create(GithubService::class.java)
}

Companion Object

코틀린에서 자바와 같이 싱글톤 패턴을 하려면 companioin object를 사용하면 됩니다. 자바의 static 멤버와 비슷합니다.

class BBQ {
	companion object {
		const val pizza = "delicious"
		
		fun cheeze() { 
			// do something
		}
	}
}

정리

싱글턴 패턴은 한 번의 생성으로 고정된 메모리 영역을 가지기 때문에 메모리를 효율적으로 사용할 수 있습니다. 그리고 한 번의 선언으로 모든 클래스에서 전역으로 사용 가능한 필드나 메서드를 만들수 있습니다.

좋은 웹페이지 즐겨찾기