JAVA

[JAVA] 디자인패턴 - 싱글톤 패턴(Singleton Pattern)을 알아보자

sagecode 2024. 11. 23. 21:00

1. 싱글톤 패턴(Singleton Pattern)

  • 객체를 생성했을 때, 같은 이름의 객체라면 오직 하나만 생성되는 패턴이다.
  • 왜쓰는가? 메모리 절약을 위해 인스턴스가 필요할 때, 새로 생성하지 않고 똑같은 인스턴스를 가져온다.
  • 보통 리소스를 많이 요구하는 객체일 때 자주 사용된다.
class Singleton {

    private static Singleton instance;
    
    private Singleton() { // 생성자
    
    }
    
    private static Singleton getInstance() {
    
    	if instance == NULL
        	instance = new Singleton();
        
        return instance;
    }
}

public class Client {
	public static void main(String[] args) {
    
    	Singleton instance1 = Singleton.getInstance(); // 첫 인스턴스 생성
        Singleton instance2 = Singleton.getInstance(); // 같은 인스턴스 호출
    }
}

 

2. 싱글톤 패턴의 장단점

  • 장점
    • 메모리 사용의 효율성 : 동일한 객체를 재사용하므로 메모리 낭비를 방지한다.
    • 글로벌 접근 가능 : 프로그램 어디서든 동일한 객체에 접근이 가능하다.
  • 단점
    • 의존성 관리 어려움 : 싱글톤이 너무 많은 역할을 가지면, 프로그램의 결합도가 높아진다.
    • 테스트 어려움 : 싱글톤 객체가 전역 상태를 가지기 때문에 단위테스트시 mocking이 어렵다.
      • mocking이란? 테스트하고자 하는 프로그램을 모조품을 만들어 사용

 

싱글톤 패턴은 코드의 활용성을 높여주는 패턴이다. 하지만 과도하게 사용하면 프로그램간의 결합도가 높아져서 유지보수가 힘들 수도 있다. 그러므로 적재적소에 활용하는 것이 중요할 것 같다.