ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Singleton Pattern(싱글턴 패턴)
    STUDY/디자인패턴 2024. 11. 26. 22:58

    싱글턴 패턴이란?

    클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근 지점을 제공하는 생성 디자인 패턴

     

    구조

     

    싱글턴 클래스는 정적 메서드 getInstance를 선언하다. 이 메서드는 자체 클래스의 같은 인스턴스를 반환한다.

    싱글턴의 생성자는 항상 클라이언트 코드에서부터 숨겨져야 하고, getInstance 메서드를 호출하는 것이 싱글턴 객체를 가져올 수 있는 유일한 방법이여야 한다.

     

    public class Database {
        private static Database instance;
    
        private Database() {
    
        }
    
        public static Database getInstance() {
            if (instance == null) {
                instance = new Database();
            }
    
            return instance;
        }
    
        @Override
        public boolean equals(Object o) {
            return super.equals(o);
        }
    
        @Override
        public int hashCode() {
            return super.hashCode();
        }
    }

     

    적용

    • 프로그램의 클래스에 모든 클라이언트가 사용할 수 있는 단일 인스턴스만 있어야 하는 경우
    • 전역 변수들을 더 엄격하게 제어해야 하는 경우

     

    장단점

    장점

    • 클래스가 하나의 인스턴스만 갖는다는 것을 확신할 수 있다.
    • 인스턴스에 대한 전역 접근 지점을 얻을 수 있다.
    • 싱글턴 객체는 처음 요청될 때만 초기화된다.

     

    단점

    • 단일 책임 원칙을 위반한다. 싱글톤 패턴은 인스턴스 관리와 비즈니스 로직을 하나의 클래스에서 처리하게 만들고, 이로 인해 유지보수와 확장성에 문제가 있을 수 있다,
    • 다중 스레드 환경에서 여러 스레드가 싱글턴 객체를 여러 번 생성하지 않도록 특별한 처리가 필요하다.
    • 싱글턴의 클라이언트 코드를 유닛 테스트하기 어려울 수 있다.

     

    관련 : 스프링 싱글톤 vs 자바 싱글톤

     

Designed by Tistory.