Singleton

^_^·2022년 4월 17일
0

Singleton 패턴

  • 객체의 인스턴스가 오직 1개만 생성되는 패턴
  • 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다
public class Singleton {

    private static Singleton instance = new Singleton();
    
    private Singleton() {
        // 생성자는 외부에서 호출하지 못하게 private 으로 지정
    }

    public static Singleton getInstance() {
        return instance;
    }

    public void singletonTest() {
        System.out.println("Singleton 테스트");
    }
}

Singleton 장점

  • 최초 한번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 메모리 영역 장점
  • 다른 클래스 간에 데이터 공유가 쉽다

Singleton Container

  • 스프링 컨테이너는 싱글턴 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글턴으로 관리
  • 싱글턴 패턴을 적용하지 않아도, 객체 인스턴스를 싱글턴으로 관리

Singleton 문제점

  • 여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글턴 객체는 상태를 유지(stateful)하게 설계하면 안된다
  • 무상태(stateless)로 설계해야함
    • 특정 클라이언트에 의존적인 필드가 있으면 안됨
    • 특정 클라이언트가 값을 변경할 수 잇는 필드가 있으면 안됨
    • 가급적 읽기만 가능해야함
    • 필드 대신에 자바에서 공유되지 않는, 지역변수, 파라미터 등을 사용해야함

인프런 스프링 참조

0개의 댓글