자바 디자인 모드 의 단일 예 모드 (1)

단일 모드: 생 성 모드 에 속 합 니 다.프로젝트 에는 하나의 대상 만 존재 하고 하나의 대상 만 존재 할 수 있 습 니 다.그러면 우 리 는 이런 유형 을 단일 모델 이 라 고 말 하고 단일 모델 이 라 고도 부른다.단일 모델 은 게으름뱅이 식 과 굶 주 린 사람 식 으로 나 뉜 다.
굶 주 린 사람 식
package com.pattern.build.singleton;

/**
 *    
 * @author chuer
 * @date 2014-7-17   5:16:21
 * @version V1.0
 */
public class HungrySingleton {

	//       
	private HungrySingleton(){ }
	
	//new    
	private static HungrySingleton singleton = new HungrySingleton();
	
	//    
	public static HungrySingleton getInstance(){
		return singleton;
	}
	
	
}

 
분석: 1: 한 종류 에 한 개체 만 존재 한 다 는 것 을 어떻게 보장 합 니까?
그것 이 바로 이런 구조 방법 을 사유 화 하 는 것 이다.이렇게 하면 이 클래스 가 다른 클래스 에서 new, 즉 이 클래스 에서 만 new 를 금지 합 니 다.하나의 예 라 고 하기 때문에 우 리 는 보통 본 류 에서 new 한 대상 만 있 습 니 다. 만약 당신 이 필요 하 다 면 본 류 에서 new 여러 대상 (나 는 그것 을 비주류 사례 라 고 부 릅 니 다).   2: 외부 에서 이 상 대 를 어떻게 얻 습 니까?
 
유일한 방법 은 이러한 대상 을 얻 기 위해 클래스 방법 (정적 방법) 을 제공 하 는 것 이다.그러면 우 리 는 클래스 변 수 를 사용 하여 이 대상 을 가 리 켜 야 합 니 다.
3: 단일 모드 는 무슨 소 용이 있 습 니까?
가장 흔히 볼 수 있 는 응용 예 를 들 어 연결 탱크 의 실현 이다.우리 의 한 항목 에는 일반적으로 하나의 연결 탱크 만 필요 하고, 연결 탱크 의 대상 만 필요 하 다.예 를 들 어 데이터베이스 의 일부 데 이 터 를 메모리 에 한 부 만 캐 시 하려 면 이 캐 시 클래스 는 한 개의 대상 만 있 을 수 있 습 니 다. 왜냐하면 우 리 는 한 부 만 캐 시 하고 싶 기 때 문 입 니 다.데이터베이스 연결 탱크 의 실현 은 참고 할 수 있 습 니 다.http://blog.csdn.net/maosijunzi/article/details/37822111
 
게으름뱅이 식
package com.pattern.build.singleton;

public class LazySingleton {
	//        
	private LazySingleton() { }

	//   
	private static LazySingleton singleton = null;

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

 
게으름뱅이 식 과 굶 주 린 사람의 차이:
인 스 턴 스 를 만 드 는 시기 가 다 릅 니 다. 게 으 른 사람 은 처음 방문 할 때 인 스 턴 스 를 만 들 고, 굶 주 린 사람 은 클래스 로 딩 할 때 초기 화 합 니 다 (클래스 로 딩 할 때 정적 데 이 터 를 초기 화 합 니 다).
게으름뱅이 식 단점: 게으름뱅이 식 이 정태 적 인 방법 에 동기 화 를 더 한 것 을 알 게 되 었 다. 즉, 동기 화 를 하지 않 으 면 스 레 드 안전 문제 가 존재 할 수 있다.
자원 의 선 판단 후 실 행 된 코드 는 일반적으로 스 레 드 안전 문제 가 존재 합 니 다).
만약 여러 라인 이 동시에 null 로 판단 된다 면, 여러 번 실례 화 될 것 이다.코드 가 다 중 스 레 드 에서 실행 되 지 않도록 동기 화 를 해 야 합 니 다.
동기 화 를 추가 하면 성능 문제, 여러 스 레 드 가 발생 할 수 있 습 니 다.
방문 할 때 는 반드시 줄 을 서 야 한다.에이, 이것 이 바로 초기 화 지연 으로 인 한 문제 야.
굶 주 림 식 단점: 극단 적 인 예 를 들 어 한 항목 에 100 개의 단일 모델 이 있 고 모든 모델 의 초기 화 에 시간 이 걸 리 며 1 분 이 걸 리 면.
그럼 모든 사례 가 굶 주 린 사람 이 라면 프로젝트 시작 에 100 분 이 걸 립 니 다. 오 마 이 갓!!!내 가 죽 을 게.. 게으름뱅이 식 으로 하면 달라 져..
분 프로젝트 가 시작 되 었 습 니 다. 단지 하나의 예 를 사용 할 때 1 분 을 소모 하면 됩 니 다. 시원 하지 않 습 니까?
요약: 단일 모델 은 광범 위 하 게 사용 되 는 디자인 모델 이다.두 가지 실현 방식 은 각각 장단 점 이 있 고, 그들의 장점 은 동시에 그들의 단점 이다.세상 은 원래
모순 적 이 야.자신의 수요 에 따라 어떤 방식 을 선택 하여 실현 할 수 있 습 니까?

좋은 웹페이지 즐겨찾기