JAVA

[Java] Singleton Pattern

lakelight 2022. 7. 28. 15:16
728x90
반응형

Singleton 싱글톤

객체가 유일하게 1개만 존재해야할 때 사용하는 패턴으로, 하나의 인스턴스만 생성하여 공유해서 사용합니다. 그래서 메모리의 낭비를 줄일 수 있습니다. 스프링에서는 @Bean을 싱글톤으로 관리합니다.

 

Singleton Pattern 구현

package Java;

public class Singleton {

    //인스턴스를 하나만 사용하기 위해 인스턴스 미리 생성
    private static Singleton singleton = new Singleton();

    //인스턴스를 생성하지 못하게 생성자를 private로 막는다.
    private Singleton(){}

    public static Singleton getInstance(){

        //기존에 인스턴스가 생성되지 않은 상태라면 생성하기
        if(singleton == null){
            singleton = new Singleton();
        }

        //기존에 인스턴스가 생성되어 있다면 반환하기
        return singleton;
    }
}

 

Singleton Pattern 사용과 확인

package Java;

public class UseSingleton {
    public static void main(String[] args) {
        //static 메서드는 클래스이름에서 .으로 접근해서 사용
        Singleton instance = Singleton.getInstance();

        Singleton instance1 = Singleton.getInstance();

        System.out.println("first instance = " + instance);
        System.out.println("second instance = " + instance1);

        System.out.println(instance.equals(instance1));
    }
}

 

<결과 값>
first instance = Java.Singleton@7a81197d
second instance = Java.Singleton@7a81197d
true

 

Singleton Class를 두번 가져왔는데 가져온 두번 모두 같은 인스턴스 값을 갖고 있다는 것을 확인 할 수 있었습니다.

728x90
반응형