ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 싱글톤 패턴(Singleton Pattern)
    Java/디자인 패턴 2023. 6. 19. 23:09
    728x90

    디자인 패턴

    - 프로그램 설계 시에 발생했던 문제점들을 객체 간의 상호 관계를 통하여 해결할 수 있도록 만들어 놓은 규약의 형태

     

    싱글톤 패턴(Singleton Pattern)

    싱글톤 패턴은 디자인 패턴의 다양한 종류 중 가장 흔하고(?) 자주 들어보신 분들이 계실 것 같습니다.

    말 그대로 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴으로, 보통 하나의 클래스를 기반으로 여러개의 인스턴스를 만들 수 있지만, 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는데 쓰입니다.

    Ex) 데이터베이스 연결 모듈

     

    싱글톤 패턴의 장점

    • 인스턴스를 생성할 때 드는 비용이 줄어든다.

    싱글톤 패턴의 단점

    • 의존성이 높아진다. ( 객체지향 5대 원칙 중, 개방-폐쇄 원칙 문제 발생 )
    • TDD(테스트 주도 개발 방식)에 적용하기 어렵습니다.

    자바에서의 싱글톤 패턴은 어떻게 구현하나요 ?

     

    보통 자바에서는 중첩 클래스를 이용해서 만듭니다. 요약하자면, 생성자를 private으로 선언하여 다른 곳에서의 생성을 막고, Getter를 통해 받아서 사용하도록 구현합니다.

     

    class SingletonExample {
    	private static class singletonHolder {
        	private static final SingletonExample INSTANCE = new SingletonExample();
        }
        public static SingletonExample getInstance(){
        	return singletonHolder.INSTANCE;
        }
    }
    
    public class Test {
    	public static void main(String[] args) {
        	SingletonExample a = SingletonExample.getInstance();
            SingletonExample b = SingletonExample.getInstance();
            }
    }

    해당 코드처럼 싱글톤 패턴 구현 시, a와 b는 모두 같은 해시코드 값을 가집니다.

     

    728x90
Designed by Tistory.