Effective Java 2.0_중첩 구조 함수 모드아 이 템 2 지식 포인트

글 쓴 이:Tyan 블 로그:noahsnail.com
1.중첩 구조 함수 모델 소개
Telescoping Constructor Pattern,중국어 이름 은 중첩 구조 함수(방법)모델 로 실제 프로젝트 에서 자주 사용 되 는 모델 입 니 다.주로 구조 함수 파라미터 가 여러 개 있 고 일부 매개 변 수 는 기본 값 을 가 진 상황 에서 사용 합 니 다.보통 기본 구조 함수 와 여러 매개 변수 개수 가 다른 구조 함수 로 구성 되 어 있 습 니 다.여러 개의 매개 변수 가 다른 구조 함 수 는 마지막 에 기본 구조 함수 에 의뢰 하여 클래스 의 인 스 턴 스 를 구성 합 니 다.그러나 이 모델 은 확장 이 잘 되 지 않 는 다 는 단점 이 있다.
2.코드 예시
//Telescoping constructor pattern - does not scale well!
public class NutritionFacts {

    private final int servingSize; // (mL) required
    private final int servings; // (per container) required
    private final int calories; // optional
    private final int fat; // (g) optional
    private final int sodium; // (mg) optional
    private final int carbohydrate; // (g) optional

    public NutritionFacts(int servingSize, int servings) {
        this(servingSize, servings, 0);
    }

    public NutritionFacts(int servingSize, int servings, int calories) {
        this(servingSize, servings, calories, 0);
    }

    public NutritionFacts(int servingSize, int servings, int calories, int fat) {
        this(servingSize, servings, calories, fat, 0);
    }

    public NutritionFacts(int servingSize, int servings, int calories, int fat,
            int sodium) {
        this(servingSize, servings, calories, fat, sodium, 0);
    }

    public NutritionFacts(int servingSize, int servings, int calories, int fat,
            int sodium, int carbohydrate) {
        this.servingSize = servingSize;
        this.servings = servings;
        this.calories = calories;
        this.fat = fat;
        this.sodium = sodium;
        this.carbohydrate = carbohydrate;
    }
}

참고 자료:
  • Effective Java 2.0
  • http://www.captaindebug.com/2011/05/telescoping-constructor-antipattern.html#.V_XDjpN94cg
  • 좋은 웹페이지 즐겨찾기