less than 1 minute read

싱글톤 패턴

App 이 시작할 때 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴

생성자가 여러 차례 호출되더라고 실제로 생성되는 객체는 하나이며 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환함

단 하나의 인스턴스를 생성해 사용하는 디자인 패턴

기존 인스턴스를 계속 사용함

  • 사용 이유

    1. 고정된 메모리 영역을 얻으면서 인스턴스를 사용하기 때문에 메모리 낭비 방지

    2. 인스턴스는 전역 인스턴스이기 떄문에 다른 클래스의 인스턴스들이 데이터 공유하기 쉬움

    3. 공통된 객체를 여러개 생성해서 사용하는 상황에서 많이 사용

    4. 인스턴스가 절대적으로 한개만 존재하는 것을 보증하고 싶을 경우 사용

    5. 두번째 이용시부터 객체 로딩 시간이 줄어들어 성능 상승

  • 단점

    1. 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들간 결합도가 높아져 “개방-폐쇄” 원칙 위배 (객체 지향 설계 원칙에 어긋남)

    2. 수정이 어려워지고 테스트하기 어려워짐

    3. 멀티 스레드 환경에서 동기화 처리 안 하면 인스턴스가 두개 생성되는 경우 발생할 수 있음

    4. 꼭 필요한 경우 아니면 지양해야 함