단일 모드 및 실현 방법

단일 모드 란 하나의 인 스 턴 스 만 실현 할 수 있 고 이 인 스 턴 스 를 얻 을 수 있 는 방법 을 제공 하 는 것 을 말한다.단일 모델 에는 몇 가지 흔히 볼 수 있 는 실현 방식 이 있다.
1. 간단 한 모드 로 로드 지연 이 실현 되 지 않 았 습 니 다.

public class Singleton{
    private Singleton(){}
    
    private Singleton instance = new Singleton();

    public static Singleton getInstance(){
        return instance;
    }
}


2. 내부 정적 클래스 방식

public class Singleton{
    private static class SingletonHolder{
        private final static Singleton INSTANCE = new Singleton();

    }

    public static Singleton getInstance(){
        return SingletonHolder.INSTANCE;
    }
}

정적 내부 클래스 를 통 해 로드 지연 실현
3. 동기 코드 방식

public class Singleton {

	private static Singleton instance = null;
	
	private Singleton(){
		//init
	}
	
	public static synchronized Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}
	
	private static volatile Singleton instance1;
	
	public static Singleton getInstance1(){
		if(instance1 == null){
			synchronized (instance1) {
				if(instance1 == null){
					instance1 = new Singleton();
				}
			}
		}
		
		return instance1;
	}
	
	
}

synchronized 동기 화 방법 은 성능 을 소모 하기 때문에 사전 판단 + synchronized 코드 블록 방식 으로 이 루어 집 니 다. volatile 키 워드 는 메모리 의 가시 적 일치 성 을 저장 할 수 있 습 니 다.
4. 매 거

public enum EnumSingleton {

	INSTNCE;
	
	private EnumSingleton(){
		
	}
	
	private String name;
	
	public String getName(){
		return null;
	}
}


매 거 진 모드 를 사용 하면 인 스 턴 스 를 직렬 화 한 후 반 직렬 화 를 통 해 인 스 턴 스 를 생 성 하 는 것 을 피 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기