Programming/디자인 패턴

싱글톤 패턴 (Singleton pattern)

필리힐리 2021. 8. 19. 11:39

https://webdevtechblog.com/%EC%8B%B1%EA%B8%80%ED%84%B4-%ED%8C%A8%ED%84%B4-singleton-pattern-db75ed29c36

 

싱글턴 패턴(Singleton Pattern)

자바와 스프링의 싱글턴 패턴(Singleton Pattern)과 차이점

webdevtechblog.com

https://coding-factory.tistory.com/709

 

[Design Pattern] 싱글톤 패턴(Singleton Pattern)에 대하여

싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴은 객체를 딱 하나만 생성하여 생성된 객체를 프로그램 어디에서나 접근하여 사용할 수 있도록 하는 패턴을 말합니다. 개발을 하다 보면 전역적으로

coding-factory.tistory.com

https://www.youtube.com/watch?v=lJES5TQTTWE 

 

싱글톤 패턴이란?

하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용

* 간단하게 말해 인스턴스를 하나만 만들어서 사용하는 것

 

싱글톤 패턴을 쓰는 장점

  • 인스턴스끼리 데이터 공유가 쉽다.
    설정 기능 같은 경우 하나의 객체를 두고 여러군데서 그 설정을 공유해야하기 때문에 싱글톤 패턴을 이용하는게 바람직하다.
  • 메모리는 컴파일시 한 번만 할당이 되기 때문에 메모리 낭비가 없다.
  • 인스턴스가 단 하나만 있다는 걸 알 수 있다.

싱글톤 패턴을 쓰는 단점

  • 싱글톤 인스턴스에 연관된 것들이 많아질 수록 종속성과 결합도가 높아져 객체지향 프로그래밍에 위반된다.
    - 이 때문에 수정과 테스트가 어려워짐
    - 객체지향 설계라면 각각의 역할이 분리되어 있고 자율성이 높아야함.
  • 멀티쓰레드환경에서 동기화처리를 안하면 인스턴스가 두개가 생성된다든지 하는 경우가 발생할 수 있다.

 

 

이른 초기화

클래스가 초기화될 때 인스턴스 생성

사용하지 않아도 생성이 되는 단점이 있음

 

늦은 초기화

늦은 초기화는 인스턴스를 실제로 사용할 시점에 생성하는 방법

멀티 쓰레드 환경에서 두 쓰레드가 동시에 접근할 경우 중복 생성이 될 수 있는 문제가 있다.

 

멀티 스레드 환경에서의 늦은 초기화

synchronized를 통해 여러 스레드가 동시에 접근하는 걸 방지

하지만 많은 스레드가 접근을 하면 성능이 저하될 수 있는 단점이 있다.

'Programming > 디자인 패턴' 카테고리의 다른 글

옵저버 패턴  (0) 2021.11.08