/ DESIGN-PATTERN

싱글톤 패턴 - Singleton Pattern [디자인패턴/코틀린/kotlin]

싱글톤 패턴은 매번 새로운 객체를 생성하지 않고 오직 하나의 객체만 생성하어 사용하려고 할때 사용한다.

싱글톤 패턴 - Singleton Pattern

싱글톤 패턴 이란

매번 새로운 객체를 생성하지 않고 오직 하나의 객체만 생성하어 사용하려고 할때 사용한다.

장점

  • 메모리 낭비를 방지
  • 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽다
  • 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용

단점

  • private 생성자톨 갖고 있기 때문에 상속할 수 없다.
  • 싱글톤은 테스트하기가 힘들다
  • 서버환경에서는 싱글톤이 하나만 생성되는 것을 보장하지 못한다.
  • 싱글톤의 사용은 전역상태를 만들수 있기 때문에 바람직하지 못하다

스프링은 싱글톤패턴을 대신하여 싱글톤을 생성 관리해주는 싱글톤레지스트리를 사용하여 단점을 해결함

예제코드

kotlin object 키워드 사용

object SingletonPattern {
    var name = "김찬정"
}

object 키워드로 싱글톤이 제공된다. thread-safe 하고 lazy 한 초기화 가능

싱글톤 생성시 파라메터가 필요하다면 패턴 사용

class LikeJavaSingletonPattern private constructor(private val name: String) {
    companion object {
        @Volatile
        private var instance: LikeJavaSingletonPattern? = null

        @Synchronized
        fun getInstance(param: String) = instance
                ?: LikeJavaSingletonPattern(param).also { instance = it }
    }
}
kimchanjung

김찬정

좀 더 넓은 TEST 커버리지! 좀 더 나은 Architecture! 좀 더 나은 Code Pattern! 보다 더 간결하고 깔끔한 코드!를 항상 갈망 합니다.

Read More