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