본문 바로가기
Design Pattern

[디자인 패턴] 점층적 생성자 패턴 (Telescoping Constructor Pattern)

by 노력남자 2019. 10. 23.
반응형

 

* 아래 3개의 패턴을 하나의 주제를 가지고 차례차례 설명합니다. 참고바랍니다.

 

점층적 생성자 패턴 (Telescoping Constructor Pattern)
자바빈즈 패턴 (JavaBeans Pattern)
빌더 패턴 (Builder Pattern)

 

점층적 생성자 패턴 (Telescoping Constructor Pattern)이란?

 

생성자필수 매개변수 1개만 받는 생성자, 필수 매개변수 1개와 선택 매개변수 1개를 받는 생성자, 선택 매개변수 2개를 받는 생성자 등에 형태로 매개변수 개수만큼 생성자를 늘리는 방식

 

코드

 

public class NutritionFacts {	
	private final int servingSize;  // 필수
	private final int servings;     // 필수
	private final int calories;     // 선택
	private final int fat;          // 선택
	private final int sodium;       // 선택
	private final int carbohydrate; // 선택
	
	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;
	}
}

 

호출 방식

 

NutritionFacts cocaCola = new NutritionFacts(240, 8, 100, 0, 35, 27);

 

특징

  • 사용자가 설정하길 원치 않는 매개변수까지 어쩔 수 없이 값을 지정해야 한다.
  • 매개변수 조합에 따라 생성자 수가 쓸데없이 많이 늘어날 수 있다.
  • 매개변수 수가 늘어나면 코드 작성 및 가독성이 저하된다.
    (어떤 매개변수 값을 입력하고 있는건지 개수는 제대로 입력한건지 계속 확인해야 하는 불편함)

 

어느정도 개발에 익숙해진 분들은 이 패턴을 보고 더 좋은 방법이 바로 머리에 떠올랐을 것 같습니다.

 

다음엔 점층적 생성자 패턴의 단점을 해결할 수 있는 자바빈즈 패턴을 포스팅하겠습니다.

 

참고

  • Joshua Bloch, Effective Java 3/E, 인사이트, 2018
반응형

댓글