Effective Java 학습 노트 제2 조 --- 개인 구조 함수 로 singleton 속성 강화

2002 단어 자바
singleton 을 실현 하 는 방법 은 두 가지 가 있 습 니 다.      방법 1: 공유 하 는 정적 구성원 은 final 필드 이 고 구성원 의 성명 은 이러한 유형 이 singleton 이라는 것 을 분명하게 표현 했다.view plaincopy to clipboardprint?
 
public class Elvis {  
 
    public static final Elvis INSTANCE = new Elvis();  
 
    private Elvis() { }  
 
    public void leaveTheBuilding() {  
 
        System.out.println("Who a baby, I'm outta here!");  
 
    }  
 
    // This code would normally appear outside the class!  
 
    public static void main(String[] args) {  
 
        Elvis elvis = Elvis.INSTANCE;  
 
        elvis.leaveTheBuilding();  
 
    }  
 
  }   
 
      방법 2: 공유 정적 final 필드 가 아 닌 공유 정적 방법 을 제공 합 니 다.이 방식 은 더 큰 유연성 을 제공 하여 API 를 바 꾸 지 않 는 전제 에서 이 종 류 를 singleton 또는 비 singleton 으로 바 꿀 수 있다.view plaincopy to clipboardprint?
 
public class Elvis {  
 
    private static final Elvis INSTANCE = new Elvis();  
 
    private Elvis() { }  
 
    public static Elvis getInstance() { return INSTANCE; }  
 
    public void leaveTheBuilding() {  
 
        System.out.println("Who  a baby, I'm outta here!");  
 
    }  
 
    // This code would normally appear outside the class!  
    public static void main(String[] args) {  
 
        Elvis elvis = Elvis.getInstance();  
 
        elvis.leaveTheBuilding();  
    }  
  } 
 
      일반적으로 첫 번 째 방법 은 효율 이 약간 높 은 다음 에 첫 번 째 방법 으로 singleton 을 실현 한 후에 변 할 여지 가 없다. 이런 종 류 를 비 singleton 으로 바 꾸 려 면 분명히 안 된다.그 러 니 이 종류 가 singleton 이라는 것 이 확실 하지 않 으 면 첫 번 째 방법 을 사용 하 세 요.두 번 째 방법 을 사용 할 때, 만약 이 클래스 가 serializable 인 터 페 이 스 를 실현 한다 면, 다시 쓰기 (override) readResolve () 방법 을 사용 해 야 합 니 다. 그렇지 않 으 면 다시 정렬 할 때 새로운 실례 가 생 길 수 있 습 니 다. 이것 은 singleton 과 어 긋 납 니 다!
 

좋은 웹페이지 즐겨찾기