Skip to content

Latest commit

 

History

History
24 lines (16 loc) · 1.34 KB

File metadata and controls

24 lines (16 loc) · 1.34 KB

Singleton

인스턴스를 오로지 한 개 만 제공하는 방법

  • 인스턴스 여러개가 필요 없는 경우에 사용 환경 세팅에 대한 정보 같은 것.
  • 자바에서는 인스턴스를 여러개 만들지 못하게 해야한다.
  • 자바에서 enum 을 이용하면 Singleton 을 만들 수 있다. enum 도 메소드와 필드를 가질 수 있기 떄문에.

Applicability

  • 모든 클라이언트들이 단 하나의 객체만 사용하면 되는 경우 (e.g Database 객체) 에는 싱글톤 법칙을 고려해봐라.
  • 전역 변수를 좀 더 엄격하게 제어하길 원한다면 싱글톤 패턴으로 만들어서 써라.
    • 전역 변수가 가지는 단점은 항상 어플리케이션과 라이프사이클이 동일 하다는 것. 싱글톤은 필요할 때만 생성하고 폐기하도록 할 수도 있다.

장점과 단점

  • 싱글톤을 사용할 경우 모두 이 객체를 참조하고 있을 거니까 결합도가 높아진다.
  • SRP 를 위반한다. 라는 말도 있다. 뭐... (Kotlin 에선 ㄱㅊ)
  • 멀티스레드 환경에서 안전하게 사용하는 방법을 고려해야한다. (Kotlin 에서는 신경안써도 됨 ㅇㅇ)
  • 필요한 시점에 만들면 되고 어디서든지 접근이 가능하기 때문에 메모리 효율적이다.

실제로 사용하는 예

  • LogManager.getLogger()