단일 모드 (굶 주 린 사람 식, 게 으 른 사람 식)

2586 단어 디자인 모드
일례
단일 모드 는 하나의 대상 이 유일한 인 스 턴 스 만 있 는 것 입 니 다.
새 클래스
public class Singleton {
	private Integer id;
	private String name;
}

테스트 클래스 만 들 기
public class Test {
	public static void main(String[] args) {
		//                ,               
		Singleton s1 = new Singleton();
		Singleton s2 = new Singleton();
		if(s1 == s2){
			System.out.println("     ");
		}else{
			System.out.println("     ");
		}
	}
	
}
//        --->      
           ,        

일례 (굶 주 림 식)
구조 방법 을 민영화 하면 외부 에서 대상 의 인 스 턴 스 를 만 들 수 없다.
//       ,        
	private Singleton(){
		
	}
	//          
	static Singleton instance = new Singleton();

이 때 우 리 는 - > 클래스 이름 을 통 해 대상 이 유일한 인 스 턴 스 를 직접 호출 할 수 있 습 니 다.
Singleton s3 = Singleton.instance;
		Singleton s4 = Singleton.instance;
		if(s3 == s4){
			System.out.println("     ");
		}else{
			System.out.println("     ");
		}
		    --->     

그러나 일반적인 상황 에서 우 리 는 유일한 실례 를 민영화 할 것 이다
//                
	private static Singleton instance = new Singleton();

이 때 외부 에 서 는 클래스 이름 을 사용 할 수 없습니다. 대상 의 방법 으로 인 스 턴 스 를 얻 을 수 있 습 니 다. 인 스 턴 스 를 얻 는 방법 을 제공 할 수 있 습 니 다.
//           
	public static Singleton getInstance(){
		return instance;
	}
Singleton s3 = Singleton.getInstance();
		Singleton s4 = Singleton.getInstance();
		if(s3 == s4){
			System.out.println("     ");
		}else{
			System.out.println("     ");
		}
	}
	//              

그럼 왜 굶 주 린 사람 이 라 고 하 죠?우 리 는 클래스 의 유일한 인 스 턴 스 를 만 들 었 고 static 로 장식 되 었 습 니 다. 그러면 이 인 스 턴 스 는 언제 불 러 왔 습 니까?
    static     ,              

따라서 클래스 를 불 러 올 때 클래스 의 유일한 인 스 턴 스 가 생 성 되 었 습 니 다.
게으름뱅이 식
//       ,        
	private Singleton(){
		
	}
	
	//  (    )              
	private static Singleton instance ; 
//         
	public static Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}
Singleton s5 = Singleton.getInstance();
		Singleton s6 = Singleton.getInstance();
		if(s5 == s6){
			System.out.println("     ");
		}else{
			System.out.println("     ");
		}
		//     --->      

클래스 를 불 러 올 때 클래스 의 유일한 인 스 턴 스 를 만 들 지 않 았 습 니 다. 사용자 가 인 스 턴 스 를 가 져 올 때 만 생 성 여 부 를 판단 할 수 있 습 니 다. 분명 한 것 은 인 스 턴 스 를 처음 가 져 올 때 비어 있 고 클래스 의 유일한 인 스 턴 스 를 만 든 후에 만 들 필요 가 없습니다.

좋은 웹페이지 즐겨찾기