본문 바로가기

Programming/Design pattern

[Design pattern] Singleton pattern

Singleton Pattern

Singleton Pattern

단 하나의 인스턴스만 생성해 사용하는 디자인 패턴. 같은 인스턴스가 필요할 때 기존에 생성된 인스턴스를 사용하도록 함. 이렇게 인스턴스를 유일하게 사용해야하는 경우가 언제인지는 직접 파악해야한다.

싱글톤 패턴을 쓰는 이유
  • 단 한번의 new로 생성하여 고정된 메모리 영역을 얻기 때문에, 메모리 낭비를 방지할 수 있다.

  • 싱글톤으로 만들어진 인스턴스는 전역 인스턴스이기 때문에 다른 클래스와 데이터를 공유하기가 쉽다.

    • 하지만 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 결합도가 높아져 개방-폐쇄 원칙을 위배하게 된다(객체 지향 설계 원칙에 어긋남).

자바에서는 생성자를 private으로 선언하여 new 를 사용한 객체 생성이 불가능하도록 한다. 보통 static 멤버로 getInstance() 를 정의해서 객체를 리턴하도록 정의한다. (thread safe를 위한 방법이 아래 참고 링크에 설명되어있다.)

코틀린은 그냥 object 로 생성하면 된다.

  • 근데 생성자에 파라미터가 필요한 경우는 생각해봐야할 듯 하다.

참고 : 싱글톤 패턴을 쓰는 이유와 문제점, 싱글튼 패턴(Singleton Pattern), Kotlin Singleton, Kotlin Companion Object

'Programming > Design pattern' 카테고리의 다른 글

[Design pattern] Factory method pattern  (0) 2021.07.05
[Design pattern] Adapter pattern  (0) 2019.01.02
[Design pattern] Builder pattern  (0) 2019.01.02
[Design pattern] Observer pattern  (0) 2019.01.02