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 |