면접준비

디자인 패턴 - 싱글톤 패턴 특징

K_Hyul 2024. 1. 8. 20:20
728x90

- 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스(하나의 클래스에서 생성된 객체) 만 가지는 패턴이다.

- 하나의 인스턴스를 만들어 해당 인스턴스를 다른 모듈들이 공유하면서 사용한다.

- 보통 데이터베이스 연결 모듈에 많이 사용된다.

 

- 장점 : 인스턴스 생성 비용이 감소된다.

- 단점 : 의존성이 높아진다. 

             TDD(Test Driven Development)를 할 때 단위 테스트를 하는데, 독립적이지 않기 때문에 실행하기 어렵다.

 

private Singleton() {
    // private 생성자
}

public static synchronized Singleton getInstance() {
    if (instance == null) {
        instance = new Singleton();
    }
    return instance;
}

 

 

- 보완방향 : 의존성 주입

 

- 의존성 주입(DI, Dependency Injection)을 통해 모듈간의 결합을 느슨하게 만든다.

- 의존성 주입자(dependency injector)가 메인 모듈이 '직접' 다른 하위 모듈에 대한 의존성을 주기보다 '간접'적으로 주입하게 하는 방식이다. (디커플링)

 

- 의존성 장점 :

 모듈들을 쉽게 교체할 수 있는 구조가 되어 테스트하기 쉽다.

 구현할 때 추상화 레이어를 넣고 구현체를 넣어 주기 때문에 애플리케이션 의존성 방향이 일관된다.

 애플리케이션을 쉽게 추론할 수 있다.

 모듈 간의 관계들이 조금 더 명확해진다.

 마이그레이션하기 쉽다.

 

- 의존성 단점 :

 모듈들이 분리되므로 클래스 수가 증가해 복잡성이 상승된다.

 약간의 런타임 페널티가 생긴다.

 

- 의존성 주입 원칙

 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야한다.

 둘 다 추상화에 의존해야한다.

 추상화는 세부 사항에 의존하지 말아야 한다.

728x90