23 가지 디자인 모델 의 단일 예 모드(스 레 드 안전)

단일 모델 은 모든 디자인 모델 중에서 가장 간단 한 것 이 라 고 할 수 있다.
단일 모델 은 시스템 에서 특정한 유형 에 대해 하나의 대상 만 있 을 수 있 고 두 번 째 대상 이 나 올 수 없다 는 것 이다.
단일 모델 도 23 에서 디자인 모델 에서 면접 을 볼 때 코드 를 쓰 라 고 요구 하 는 소수의 모델 중 하나 이다.주로 다 중 스 레 드 아래 단일 모델 의 스 레 드 안전성 문 제 를 고찰 한다.
1.다 중 스 레 드 보안 단일 모드 인 스 턴 스 1(동기 화 잠 금 사용 하지 않 음)
 public class Singleton {
     private static Singleton sin=new Singleton();    //           
     private Singleton(){    ///private       ,           new        
     }
     public static Singleton getSin(){    ///       public      
         return sin;
     }
 }

상기 코드 의 단점 중 하 나 는 이 종 류 를 불 러 올 때 바로 new 정적 대상 이 나 오 는 것 입 니 다.시스템 에 이런 종류 가 많 을 때 시작 속도 가 느 려 집 니 다.현재 유행 하 는 디자인 은 모두'로드 지연'을 말 하 는데 우 리 는 처음 사용 할 때 첫 번 째 대상 을 초기 화 할 수 있다.그래서 이런 건 작은 시스템 에 적합 하 다.
2.다 중 스 레 드 보안 단일 모드 인 스 턴 스 2(동기 화 방법 사용)
  public class Singleton {  
       private static Singleton instance;  
       private Singleton (){

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

상기 코드 중 한 번 에 잠 긴 방법 이 있 습 니 다.이 입도 가 좀 큽 니 다.개선 은 그 중의 new 문 구 를 잠 그 면 OK 입 니 다.이른바'이중 자물쇠'메커니즘 이다.
3.다 중 스 레 드 보안 단일 모드 인 스 턴 스 3(이중 동기 화 잠 금 사용)
  public class Singleton {  
       private static Singleton instance;  
       private Singleton (){
       }   
       public static Singleton getInstance(){    //            
         if (instance == null){
             synchronized(Singleton.class){
                 if (instance == null)
                     instance = new Singleton(); 
            }
        }
        return instance;
      }

  }

좋은 웹페이지 즐겨찾기