Design Pattern

[DP] 싱글톤 패턴

sirius 2021. 3. 19. 10:13

싱글톤 패턴(singleton pattern)

 

하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴

하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 그렇게 하지 않고 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용

 

class Singleton {
    private static class singleInstanceHolder {
        private static final Singleton INSTANCE = new Singleton();
    }
    public static Singleton getInstance() {
        return singleInstanceHolder.INSTANCE;
    }
}

public class Main { 
     public static void main(String []args){ 
        Singleton a = Singleton.getInstance(); 
        Singleton b = Singleton.getInstance(); 
        System.out.println(a.hashCode());
        System.out.println(b.hashCode());  
        
        if (a == b){
         System.out.println(true); 
        } 
     }
}

 

싱글톤 패턴의 단점

TDD 방식으로 개발할 때, 독립적이지 않으므로 단위테스트에 어려움이 있다. 

모듈간의 결합을 강하게 만들 수 있다는 단점이 있다. 

의존성 주입을 통해 모듈간의 결합을 낮춰야 한다.