ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바(Java) 싱글턴 패턴(Singleton Pattern)
    ProgrammingLanguage/Java 2021. 1. 23. 12:28

    *싱글턴 패턴

    ->객체가 1개의 인스턴스만 가져야 하는 경우 사용하는 자바의 디자인 패턴 중 하나이다.

    ->장점 : 인스턴스가 1개만 생성되기 때문에 효율적인 메모리 관리가 가능하다.

    ->단점 : 동시에 해당 인스턴스를 공유하는 환경(특히, Multithread 환경)에서 동시성(Concurrency) 문제 고려로 인하여 프로그램의 유연성이 감소한다.

    ※이러한 동시성의 문제를 해결한 것을 Thread-safe하다 라고 한다. 여러가지 싱글턴 패턴(이른 초기화 방식, 게으른 초기화 방식...)이 존재하는데, 이 글에서는 이른 초기화 방식만 다룬다.

     

    *싱글턴 패턴 : 이른 초기화(Eager Initialization)

    ->이른 초기화는 static 예약어를 사용하여 정적 바인딩(Static binding)을 통해 컴파일 시점에 인스턴스를 메모리에 등록하여 사용하는 방식이다. 최초로 클래스가 로딩 될 때 객체가 생성되기 때문에 Thread-safe하지만, static의 특성으로 인해 로딩 되는 시점부터 객체가 항상 생성되어 있기 때문에, 비효율적일 수 있는 문제가 있다.

    class BookMgr {
    	// private 예약어를 사용하여 외부에서 해당 변수에 접근하지 못하도록 막는다.
    	// static 예약어를 사용하여 클래스가 최초 로딩될 때 BookMgr 인스턴스가 생성된다.
    	private static BookMgr manager = new BookMgr();
    	
    	// private 예약어를 사용하여 외부에서 BookMgr 생성자를 사용 못하도록 막는다. 
    	private BookMgr() {
    
    	}
    	
    	// public 예약어를 사용하여 해당 클래스 메서드를 통해서만 생성된 1개의 인스턴스를 반환하도록 한다.
    	public static BookMgr getInstance() {
    		return manager;
    	}
    }
    
    public class SingletonTest{
    	public static void main(String[] args) {
    		// 클래스 메서드를 이용하여 1개 뿐인 BookMgr 인스턴스를 호출한다.
    		BookMgr manager = BookMgr.getInstance();
    	}
    }

    댓글

Designed by Tistory.