Java/디자인 패턴

싱글톤 패턴(Singleton Pattern)

Jshrewd 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