자바 디자인 모드 의 단일 예 모드 (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 분 을 소모 하면 됩 니 다. 시원 하지 않 습 니까?
요약: 단일 모델 은 광범 위 하 게 사용 되 는 디자인 모델 이다.두 가지 실현 방식 은 각각 장단 점 이 있 고, 그들의 장점 은 동시에 그들의 단점 이다.세상 은 원래
모순 적 이 야.자신의 수요 에 따라 어떤 방식 을 선택 하여 실현 할 수 있 습 니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.