디자인 모델: 단일 모델 게으름뱅이 식 과 굶 주 린 사람의 차이

2011 단어 디자인 모드
단일 모드 에서 하나의 클래스 는 하나의 인 스 턴 스 대상 만 허용 합 니 다.이전의 이 해 는 사용자 가 하나의 인 스 턴 스 대상 만 만 드 는 규칙 을 자발적으로 지 키 는 것 이 었 다. 사실은 이것 은 잘못된 것 이다. 단일 모델 에서 클래스 에 특수 한 처 리 를 하여 사용자 가 이러한 인 스 턴 스 대상 만 얻 을 수 있 게 할 것 이다.사용 자 는 두 번 째 인 스 턴 스 대상 을 가 져 올 수 없습니다.
게으름뱅이 식 과 굶 주 린 한식 도 있 는데 두 가지 방식 의 차 이 를 간단히 말씀 드 리 겠 습 니 다.
  게으름뱅이 식:
  (1): 클래스 의 구조 기 를 민영화 로 설명 하면 외부 에서 구조 함 수 를 통 해 이러한 대상 을 만 들 수 없습니다.그렇다면 어떻게 이런 종류의 유일한 대상 을 만 듭 니까?
  (2): 이 클래스 에서 정적 인 개인 변 수 를 설명 합 니 다.초기 화 되 지 않 거나 null 로 초기 화 되 는 것 이 게으름뱅이 의 특징 입 니 다.
  (3): 이 클래스 에 대외 공공 을 위 한 정적 인 방법 으로 이 변 수 를 방문 합 니 다. 이 변수 가 null 이면 만 듭 니 다.
public class Test
{
  private static Test t = null;     //    Null
  
  private Test() //       private   
  {
  }
  public static Test getTest()
  {
    if(null = t){           //   null,     
	  t = new Test();
	}
	return t;      //            
  }
}

굶 주 린 사람:
  
(1): 클래스 의 구조 기 를 민영화 로 설명 하면 외부 에서 구조 함 수 를 통 해 이러한 대상 을 만 들 수 없습니다.
  (2): 이 클래스 에서 정적 인 개인 변 수 를 설명 합 니 다.그것 을 초기 화 하 는 것 이 굶 주 린 사람의 특징 이다.
  (3): 이 클래스 에 대외 공공 을 위 한 정적 인 방법 으로 이 변 수 를 방문 합 니 다.
public class Test
{
  private static Test t = new Test();  //         ,      
  
  private Test() //       private   
  {
  }
  public static Test getTest()
  {
	return t;      //            
  }
}

  이러한 생 성 방법 은 결코 가장 좋 은 것 이 아 닙 니 다. t 대상 이 필요 하지 않 아 도 Test 류 의 다른 방법 이 필요 할 때 t 대상 이 생 성 되 기 때 문 입 니 다. 이것 은 구성원 변수 가 클래스 로 딩 할 때 반드시 초기 화 되 기 때 문 입 니 다.
  가장 좋 은 방법 은 이 멤버 의 성명 을 내부 클래스 에 넣 는 것 이다.
public class Test
{
  private static class createTest
  {
    private static Test t = new Test();
  }
  
  private Test() //       private   
  {
  }
  public static Test getTest()
  {
	return createTest.t;      //            
  }
}

  클래스 는 사용 할 때 만 불 러 오기 때문에 이 Test 대상 t 가 진정 으로 필요 할 때 getTest 방법 을 호출 해 야 내부 클래스 가 불 러 오고 t 가 생 성 됩 니 다.Test 류 의 다른 방법 을 사용 할 때 이 내부 클래스 는 불 러 오지 않 고 t 대상 도 만 들 지 않 습 니 다.이렇게 하면 쓸모없는 대상 의 발생 을 줄인다.

좋은 웹페이지 즐겨찾기