가장 좋 은 단일 모드 를 쓰기 시작 하 다.

단일 모델 은 우리 가 자주 사용 하 는 디자인 모델 이지 만 반드시 가장 좋 은 단일 모델 을 사용 하 는 것 은 아니다.
코드 를 통 해 가장 좋 은 단일 모델 을 점차적으로 분석 하여 여러분 께 공유 합 니 다.
 
단일 모드 라 고 하면 가장 빨리 생각 나 는 것 은 굶 주 린 사람의 단일 모드, 즉:
public class Singleton {
    private Singleton () {
    }

    private static Singleton instance = new Singleton();

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

이러한 단일 사례 모델 은 한 가지 부족 해서 로드 지연 을 할 수 없습니다. 특히 이 단일 사례 가 한 가지 일 만 하 는 것 이 아니 라 이 단일 사례 의 생 성 과정 이 느 릴 때 그 부족 은 더욱 두 드 러 집 니 다.
 
 
또 다른 사례 모델 도 생각 하기 쉽다. 그것 이 바로 게으름뱅이 사례 모델 이다. 즉,:
public class LazySingleton {
    private LazySingleton() {
    }

    private static LazySingleton instance = null;

    public static synchronized LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }
}

 이런 단일 사례 모델 도 현저 한 부족 이 있다. 그것 은 바로 동기 화 키 워드 를 도입 하 는 것 이다. 다 중 스 레 드 상황 에서 효율 이 낮 을 것 이다.
 
 
그러면 어떻게 사례 모델 을 디자인 해 야 합 니까? 사실은 우 리 는 내부 유형의 형식 을 통 해 사례 모델 을 쓸 수 있 습 니 다. 즉,:
public class StaticSingleton {
    private StaticSingleton() {
    }

    private static class SingletonHolder {
        private static StaticSingleton instance = new StaticSingleton();
    }

    public static StaticSingleton getInstance() {
        return SingletonHolder.instance;
    }
}

 이러한 단일 모드 는 로드 지연 을 실현 할 수 있 으 며 동기 화 키 워드 를 도입 하지 않 아 완벽 합 니 다.

좋은 웹페이지 즐겨찾기