자바 단일 모드(굶 주 린 모드 와 게 으 른 모드)

3772 단어 자바단일 모드
자바 단일 모드
굶 주 림
굶 주 린 사람 모델 에 대해 우 리 는 이렇게 이해 할 수 있다.이 사례 는 매우 배가 고 프 고 음식 을 급히 먹 어야 하기 때문에 클래스 를 불 러 올 때 바로 대상 을 만 들 수 있다.
게으름뱅이
게으름뱅이 모델 에 대해 우 리 는 이렇게 이해 할 수 있다.이 사례 는 매우 게 으 르 고 자신 이 필요 로 할 때 만 행동 할 수 있 으 며 일찍 준 비 를 할 줄 몰 랐 다.대상 이 필요 할 때 만 대상 이 있 는 지 여 부 를 판단 하고 없 으 면 바로 대상 을 만 든 다음 에 돌아 갑 니 다.대상 이 있 으 면 다시 만 들 지 않 고 바로 돌아 갑 니 다.
단일 디자인 모드 는 JDBC 링크 데이터베이스 에 자주 사 용 됩 니 다.
주의:
1.우리 가 자주 사용 하 는 것 은 첫 번 째 굶 주 린 사람 이다.왜냐하면:
 (1)단 례 설계 모델 을 채택 한 이상 단 례 류 의 대상 을 사용 하기 위해 먼저 그 를 실례 화한 다.
 (2)게으름뱅이 식 에 어느 정도 안전 위험 이 존재 하 므 로 동기 화 키 워드 를 더 해 synchronized 를 해 야 한다.그렇지 않 으 면 사례 는 말 할 것 도 없 지만 synchronized 를 더 하면 효율 이 약간 떨어진다.
2.첫 번 째 방법 에서 코드 private static final Single SINGLE=new Single();왜 final 이 있 지?
final 키워드 에 의 해 수 정 된 클래스 는 계승 할 수 없고 final 에 의 해 수 정 된 구성원 변 수 는 수정 할 수 없습니다.
여기 서 final 을 사용 하여'동일 대상'이라는 개념 을 강화 하고 중점 을 두 었 습 니 다.-이런 대상 만 있 고 수정 할 수 없습니다.
싱글 싱글 싱글 을 final 로 꾸 미 지 않 으 면 업무 가 복잡 하고 무심코 이 대상 을 수정 해 여러 가지 실 수 를 하 는 경우 가 있다.
첫 번 째(굶 주 린 식):
생각:
(1)다른 클래스 가 이러한 대상 을 만 들 지 못 하 게 합 니 다.곧 구조 함 수 를 개인 으로 설정 합 니 다!
(2)이 클래스 의 대상 을 사용자 정의 합 니 다.
(3)사용자 정의 대상 을 제공 합 니 다.즉,get 방법 을 정의 하고 값 을 이러한 대상 으로 되 돌려 줍 니 다.
 분석:
 첫 번 째 단계:단일 클래스 에서 구조 함 수 를 민영화 하고 get()함 수 를 이용 하여 이러한 대상 을 외부 에 제공 하기 때문에 다른 클래스 는 이러한 대상 을 구성 할 수 없습니다.
 두 번 째 단계:그러나 다른 클래스 가 이 단일 클래스 의 방법 을 호출 하려 면 내 명,방법 명()으로 만 이 루어 져 야 합 니 다.이 방법 은 정적 static 이 어야 합 니 다.
 세 번 째 단계:정적 방법 으로 정적 구성원 에 게 만 접근 할 수 있 습 니 다!그래서 SINGLE 를 정적 으로 설정 해 야 돼 요.

public class SingleDemo { 
  public static void main(String[] args) { 
     Single s1=Single.getSingle(); 
     s1.setNumber(44); 
     Single s2=Single.getSingle(); 
     s2.setNumber(55); 
     System.out.println("s1.number="+s1.number); 
     System.out.println("s2.number="+s2.number); 
     if(s1.equals(s2)){ 
        System.out.println("s1 s2      :s1==s2");//if     
       } 
   } 
} 
 
 
class Single{ 
  int number; 
  public int getNumber() { 
       return number; 
     } 
  public void setNumber(int number) { 
       this.number = number; 
     } 
  private Single(){};//    
  private static final Single SINGLE=new Single();//    
  public static Single getSingle(){//        
       return SINGLE; 
  } 
} 
두 번 째(게으름뱅이 식):

package cn.com; 
public class SingleDemo2 { 
   public static void main(String[] args) { 
      Single s1=Single.getSingle(); 
      s1.setNumber(44); 
      Single s2=Single.getSingle(); 
      s2.setNumber(55); 
      System.out.println("s1.number="+s1.number); 
      System.out.println("s2.number="+s2.number); 
      if(s1.equals(s2)){ 
        System.out.println("s1 s2      :s1==s2");//if     
       } 
     } 
 
 
} 
 
 
class Single{ 
   int number; 
   public int getNumber() { 
       return number; 
     } 
   public void setNumber(int number) { 
       this.number = number; 
     } 
   private Single(){}; 
   private static Single SINGLE=null; 
   public static synchronized Single getSingle(){//      synchronized   !!! 
      if(SINGLE==null){ 
         SINGLE=new Single(); 
         return SINGLE; 
       } 
      else{ 
         return SINGLE; 
        } 
   } 
} 


이상 은 자바 단일 디자인 모델 에 대한 상세 한 설명 입 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 커 뮤 니 티 에 가서 토론 하 십시오.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기