필기 단일 디자인 모드

참고: < 헤드 피 스 트 디자인 모델 >
1. 즉시 불 러 오기
즉시 불 러 오 는 것 은 클래스 를 사용 할 때 대상 을 만 들 었 습 니 다.
장점: 간단 하고 다 중 스 레 드 동기 화 문제 가 없습니다.
단점: 인 스 턴 스 가 사용 되 지 않 았 을 때 대상 은 이 공간 을 차지 합 니 다.
public class Singleton {
    //                ,  static、final  
    private static final Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
}

2. getInstance () 의 성능 이 응용 프로그램 에 중요 하지 않다 면
getInstance () 에 synchronized 키 워드 를 추가 하고 게 으 름 피 우기
public class Singleton{
    private static Singleton uniqueInstance;
    private Singleton(){
    //                             
    public static synchronized Singletion getInstance(){
        if(uniqueInstance == null){
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }
}

3. 로드 지연 이 아 닌 방법.
JVM 은 모든 스 레 드 가 유 니 크 인 스 턴 스 변 수 를 방문 하도록 보장 하기 전에 이 인 스 턴 스 를 만 듭 니 다.
public class Singleton{
    private static Singleton uniqueInstance
                = new Singleton();
    private Singleton(){}
    public static Singletion getInstance(){
        return uniqueInstance;
    }
}

4. 이중 검사 에 잠 금 을 추가 하고 getInstance () 에서 동기 화 사용 을 감소 합 니 다.
volatile + synchronized + 로드 지연, 성능 이 가장 좋 습 니 다: getInstance () 의 시간 을 크게 줄 입 니 다.
public class Singleton{
    private volatile static Singleton uniqueInstance;
    private Singleton(){
    //    ,     ,       
    //                 
    public static Singletion getInstance(){
        if(uniqueInstance == null){
            Synchronized(Singleton.class){
                //        ,     。     null,     
                if(uniqueInstance == null){
                    uniqueInstance = new Singleton();
                }
            }
        }
        return uniqueInstance;
    }
}

단일 모드 의 특징
  • 1. 하나의 인 스 턴 스 만 확보 하고 전체 방문 점
  • 을 제공 합 니 다.
  • 2. 구조 기 는 사유
  • 좋은 웹페이지 즐겨찾기