싱글 또한, 싱글 톤 패턴이라는 JVM에서 클래스를 의미, 하나의 인스턴스 만이 존재합니다.
두 번의 실시 모드
배고픈 사람의 스타일은 즉시 관계없이 객체가 사용 유무,로드됩니다, 방식으로로드됩니다.
같은 생성자의 데이터베이스에 대한 연결을 설정으로, 더 이상 시간 코드를 차지하는 큰 소비의 쓰기 성능은 다음 시간에 약간 Caton 느낌이 시작됩니다.
게으른 남자의 방법은 로딩 시간 만이 부하에 사용하는 지연이다. 그리고이 스레드 안전 (배울 수있는 학생들의 진행의 관점에서 어떤 스레드 섹션을 전개 할 연기) 고려 사항.
하지 객체 인스턴스화을하기 때문에 게으른 유형을 사용하여 활성화되면, 약간 빠른 배고픈 사람 유형보다 더 느낄 것이다. 첫 번째 호출, 그것은 작업을 인스턴스화 할 때, 나는 조금 천천히 생각합니다.
배고픈 사람 유형의 사용에 비즈니스 시작 및 초기화에 대한 전체 시간을 가질 수 그렇지 않으면 게으른 사람을 사용하여, 비즈니스 요구를 봐
/ ** 굶주린 하나의 실시 예 모드 * /
공용 클래스 GiantDragon {
클래스에서 인스턴스화 할 수 없습니다 // 생성자의 민영화는 새 외부
개인 GiantDragon () {}
의 인스턴스에 클래스 속성을 준비 // 객체입니다. class 속성 때문에 그렇게 만
개인 정적 GiantDragon 새로운 새 인스턴스 GiantDragon = ();
// 공용 정적 메소드 호출은 라인 (12)에 의해 정의 된 개체 얻을 구비
공용 static GiantDragon의 getInstance () {
창 인스턴스;
}
}
/ ** 게으른 하나의 실시 예 모드 * /
공용 클래스 GiantDragon2 {
클래스 새 외부에 의해 인스턴스화 할 수없는 // 생성자의 민영화
개인 GiantDragon2 () {}
, 클래스 속성을 준비 // 예를 들어 점 개체가 있지만, 포인트는 일시적으로 null의
개인 정적 GiantDragon2 인스턴스;
// 공공 정적 방법, 개체의 인스턴스를 반환
공공 정적 GiantDragon2의 getInstance를 () {
// 첫 번째 방문은, 모든 개체 인스턴스에 지점을하지 찾았을 때 개체 인스턴스
IF (예 == NULL) {
예 GiantDragon2 새로운 새 = ();
}
// 리턴 객체 인스턴스 점
복귀 인스턴스;
}
}
// 테스트
공공 정적 무효 메인 (문자열 []에 args) {
새로운 인스턴스에 의해 주어지는 //
@ = GiantDragon giantDragon 새로운 GiantDragon ();
// 만의 getInstance하여 개체 얻을
GiantDragon GiantDragon.getInstance을 G1 = ();
GiantDragon GiantDragon.getInstance = G2 ();
GiantDragon GiantDragon.getInstance G3 = ();
// 동일한 개체
에서 System.out.println (== G1에서 G2)
에서 System.out.println (== G1의 G3)
}
이것은 이것이다 점의 자주 검사가, 얼굴 질문은 보통 물어 인터뷰 시간입니다 :
대답 시간은 세 개의 요소 대답
민영화 1. 생성자
인스턴스 2. 정적 속성 점
3. 공공 정적 메소드는 정적 특성의 두 번째 단계를 반환의 getInstance
싱글은 무엇인가?
민영화 1. 생성자
인스턴스 2. 정적 속성 점
3. 공공 정적 메소드는 정적 특성의 두 번째 단계를 반환의 getInstance