티스토리 뷰
728x90
싱글톤 패턴(singleton pattern)
개념
- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
- 메서드만 호출해서 사용할 때, 객체를 구별할 필요가 없기 때문에 여러 개의 객체가 필요 없음
- 이럴 때, 객체의 생성을 제한하는 singleton pattern 사용
- 보통 데이터베이스 연결 모듈에 많이 사용
장점
- 인스턴스 생성할 때 드는 비용이 줄어듦
- 다른 클래스 간에 데이터 공유가 쉬움
단점
- 의존성이 높아짐 -> 의존성 주입(DI, Dependency Injection)을 통해 모듈 간 결합을 조금 더 느슨하게 만들 수 있음
- TDD(Test Driven Development)할 때 걸림돌이 됨
더보기
TDD를 할 때 단위 테스트를 주로 하는데, 단위 테스트는 테스트가 서로 독립적이어야 하며 테스트를 어떤 순서로든 실행할 수 있어야 하는데, 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 독립적인 인스턴스를 만들기가 어려움
코드
class Singleton {
// 2. Singleton 타입의 instance 생성
private static Singleton instance = new Singleton();
// 1. private으로 생성자를 만들어서 딱 하나만 만들 수 있도록 막아줌
private Singleton() {
}
// 3. public으로 getInstance() 만들기
public static Singleton getInstance() {
return instance;
}
}
public class Hello {
public static void main(String[] args) {
Singleton a = Singleton.getInstance();
Singleton b = Singleton.getInstance();
if(a == b) {
System.out.println(true);
}
}
}
// true
728x90
'CS > 디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 전략 패턴(strategy pattern) (0) | 2022.07.04 |
---|---|
[디자인 패턴] 팩토리 패턴(factory pattern) (0) | 2022.07.04 |