티스토리 뷰

싱글톤 패턴(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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday