CS
[디자인 패턴] 싱글톤 패턴
지제로
2023. 3. 21. 17:48
* Singleton Pattern
* 특징
- 싱글톤 패턴은 하나의 클래스에 하나의 인스턴스만 가지는 패턴이다.
- 하나의 인스턴스를 생성한 후 다른 모듈들이 해당 인스턴스를 공유하며 사용한다.
- 하나의 인스턴스를 생성하기에 인스턴스 생성할 때 드는 비용이 줄어든다.
- 하나의 인스턴스를 공유하기에 의존성이 높아진다.
* 사용법
public class SingletonService {
private static final SingletonService instance= new SingletonService();
public static SingletonService getInstance(){
return instance;
}
private SingletonService(){
}
}
- SingletonService 클래스를 만들어 SingletonService 객체를 생성한다.
- getInstance를 통해 조회하도록 허용한다.
- private 생성자를 통해 추가적인 객체 생성을 막는다.
* 사용 시 단점
- TDD에 방해가 된다.
= TDD에 주로 사용되는 단위 테스트는 독립적이어야 하며 어떤 순서로든 실행되어야 한다. 하지만 싱글톤 패턴은 하나의 인스턴스를 기반으로 구현하기에 테스트마다 독립적인 인스턴스를 생성하기 힘들다. - 의존성 주입
= 싱글톤 패턴은 모듈 간의 결합을 강하게 만든다.
+) 이는 의존성 주입을 통해 모듈 간의 결합을 느슨하게 만들어 해결할 수 있다.