싱글톤 패턴 (singleton pattern)

Winney·2021년 5월 22일
0

용어

  • 소프트웨어 디자인 패턴(소프트웨어 디자인 설계) : 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다.(wiki) 즉, 소프트웨어 설계 시 특정 문제를 반복해서 해결할 때 재사용할 수 있는 해결책을 의미한다. 주로 생성 패턴, 구조패턴, 행위 패턴 3가지로 나눈다.

싱글톤 패턴(singleton pattern)

  • 자바에서 많이 사용하는 패턴
  • 생성 패턴의 하나이다.
  • 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴
  • 싱글톤 패턴의 클래스는 생성자가 여러 차례 호출되어도 실제로 생성되는 객체는 하나이며 최초 생성 이후 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.
  • 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴. 즉, 생성자의 호출이 반복적으로 이뤄져도 실제로 생성되는 객체는 최초 생성된 객체를 반환한다.

장점

  • 메모리 낭비를 줄일 수 있다.
    : 최초 한 번만 메모리 할당 이후 한 번의 인스턴스 생성으로 재사용 가능 하기 때문
  • 다른 클래스의 인스턴스들이 데이터 공유하기가 쉽다.
    : 싱글톤 클래스의 인스턴스는 전역 인스턴스 이기 때문

단점

: 싱글톤 인스턴스가 전역성을 띄면서 생기는 문제이다.

  • 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유 할 경우 다른 클래스의 인스턴스와 결합도가 높아져 객체 지향 설계 원칙의 '개방-폐쇄 원칙'에 어긋 날 수 있다.
    -> 수정, 테스트가 어려워진다.
    -> 싱글톤 객체 수정으로 사이드 이펙트가 생길 수 있다.
    -> 멀티 쓰레드 환경에서 동기화처리 문제가 생긴다. (인스턴스가 2개 생성 된다는 등의 문제)

출처

profile
프론트엔드 엔지니어

0개의 댓글