ABOUT ME

Today
Yesterday
Total
  • [기술 면접 공부] 싱글톤 패턴
    기술 면접 공부 2021. 1. 6. 23:51

    싱글톤 (singleton)

    정의

    해당 클래스의 인스턴스가 하나만 생성이 되는 것을 보장하며 어디서든지 그 인스턴스에 접근이 가능하도록 만드는 패턴

     

    생성 및 사용법

    클래스에 instance라는 private한 멤버 변수를 선언, 생성자를 private하게 외부에 노출이 되지 않도록 선언한다.

    static으로 전역에서 접근이 가능한 메서드를 생성해 instance를 반환한다.

     

    사용 목적 및 용도

    시스템에서 전역으로 관리되고 단 하나의 클래스에서만 정보가 유지되는 것을 원할 때 사용한다.

    주로 시스템 자원이나 정보를 관리하는 용도로 사용한다.

     

    장점

    모든 데이터를 전역으로 관리할 수 있기 때문에 쉽게 접근 가능하다.

    중복 생성 및 메모리 낭비를 방지할 수 있다.

     

    단점

    정적 메모리에 할당된 객체이므로 너무 큰 메모리가 쌓일 경우 프로그램 성능이 낮아진다. 전역 변수와 static 변수는 데이터 영역에 저장되는데, 데이터 영역은 프로그램 시작과 동시에 할당되고 변하지 않는다.

    너무 많은 데이터를 공유시킬 경우 싱글톤 인스턴스와 다른 클래스 인스턴스들 간의 결합도가 높아져 개방폐쇄원칙(OCP : 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다)에 위배될 수 있다.

    병렬 처리나 동기화 같이 여러 방법으로 메모리에 접근하는데 문제가 발생한다. 이는 Synchronized 키워드를 사용해 방지 할 수 있다.

     

    static class를 사용하는 것과 차이점

    단순하게 static 속성만을 액세스 한다면 큰 차이는 없다.

    기본적으로 singleton 패턴은 객체를 생성함에 있어서 이 객체의 개수를 하나로 제한하겠다는 것이다. 반면 static class는 객체 자체가 아니다.

    singleton은 인터페이스 구현이 가능하고 일반 객체로서 다른 클래스나 메서드에 전달할 수 있지만 static class는 객체가 아니기에 불가능하다

Designed by Tistory.