본문 바로가기

취업과 기본기 튼튼/빽 투더 기본기

[디자인 패턴 2편] 생성 패턴, 싱글톤(Singleton)

1. 개념

싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.

1.1. 장점

  • 하나의 인스턴스를 사용 -> 메모리 낭비를 방지할 수 있음
  • 전역 인스턴스 -> 다른 클래스의 인스턴스들이 데이터를 공유

1.2. 단점

  • 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우,
    SOLID 원칙 중 SRP, OCP 원칙에 위배됨.
  • 즉, 수정과 테스트가 어려워짐
  • 꼭 필요한 경우아니면 지양해야 함

1.3. 활용 상황

  • 공통된 객체를 여러 개 생성해서 사용해야하는 상황
  • 전역에서 사용될 하나의 객체를 만들어야하는 상황
    • ex. DBCP(Database Connection Pool), 로거(Logger)

2. 구조

출처 : https://www.tutorialspoint.com

3. 코드

// SingletonPatternDemo.java

public class SingletonPatternDemo {
  public static void main(String[] args) {

    // 항상 getter 로 객체를 받아와야 함.
    SingleObject object = SignleObject.getInstace();
  }
}
// SingleObject.java

public class SingleObject {
  private static SingleObject instance = new SingleObject();

  // 생성자는 내부에서만 호출되게 한다.
  private SingleObject(){}

  // 외부에서 객체를 받아갈 수 있는 방법은 getInstance() 가 유일하다.
  public static SingleObject getInstance() {
    return instance;
  }
}

4. 참고