[디자인패턴] 싱글톤패턴(Singleton Pattern)

고지훈·2021년 10월 6일
1

DesignPattern

목록 보기
10/16
post-thumbnail

싱글톤패턴(Singleton Pattern)

싱글톤패턴은 인스턴스가 프로그램 내에서 오직 하나만 생성되는 것을 보장하고, 프로그램 어디에서든 인스턴스에 접글할 수 있도록 하는 패턴이다.

즉, 똑같은 인스턴스를 여러개 만드는 것이 아닌, 기존에 생성했던 동일한 인스턴스를 사용하는것을 의미한다.


싱글톤패턴 구현

위의 개념을 토대로 싱글톤패턴을 구현해보자!

// SingleObj.java
public class SingleObj {
    // 단 하나의 객체 생성을 위한 변수
    private static SingleObj singleObj = null;
    
    // 외부에서 객체를 생성하지 못하도록 private로 생성자 선언
    private SingleObj() {
    }
    
    // 오직 하나의 객체만 생성
    public static SingleObj getInstance() {
    	if(singleObj == null) {
        	singleObj = new SingleObj();
        }
        return singleObj;
    }
}

외부에서 객체를 생성할 수 없도록 생성자를 private로 선언한다. 이렇게 할 경우 객체 생성에 대한 관리를 내부적으로 하게 된다.

외부에서 SingleObj객체를 생성할 수 없기 때문에, 미리 생성된 자신을 반환할 수 있도록 getInstance메서드를 정의한다. 이때, getInstance메서드는 static으로 정의한다.

getInstance메서드를 호출했을 때, 객체가 null이라면 새로운 객체를 생성하고 객체가 이미 존재하면 그것을 그대로 반환한다.

// Client.javva
public class Client {
    public static void main(String args[]) {
    	for(int i = 0; i < 3; i++) {
        	SingleObj obj = SingleObj.getInstance();
            System.out.println(obj.toString());
        }
    }
}

[결과화면]

위 결과에서 확인했듯이 기존에 객체가 있는 경우는 그것을 그대로 반환함으로써 처음 한번만 객체가 생성되고 그 뒤부터는 동일한 객체를 사용한다는걸 확인할 수 있다.

profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글