생성자에 인자가 많을때에는 빌더 패턴을 이용한다.
NutritionFacts 클래스는 불변이며
모든 매개변수의 기본값들을 한곳에 모아있다.
빌더의 세터 메서드들은 빌더 자신을 반환하기때문에 연쇄적으로 호출 할수 있다.
빌더패턴의 장점은 클라이언트에서 코드는 쓰기 쉽고 읽기 쉽다.
빌터패턴은 파이썬의 명명된 선택적 매개변수를 흉내낸것임.
package item2;
public class Test {
public static void main(String[] arg) {
NutritionFacts coca = new NutritionFacts.Builder(230,8)
.carbohydrate(100)
.sodium(35)
.carbohydrate(27)
.fat(888)
.build();
System.out.println("-----");
System.out.println(coca.getFat());
}
}
package item2;
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 static class Builder {
// 필수 매개변수
private final int servingSize;
private final int servings;
// 선택 매개변수
private int calories = 0;
private int fat = 0;
private int sodiium = 0;
private int carbohydrate = 0;
public Builder(int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
public Builder calories(int val) {
calories = val;
return this;
}
public Builder fat(int val) {
fat = val;
return this;
}
public Builder sodium(int val) {
sodiium = val;
return this;
}
public Builder carbohydrate(int val) {
calories = val;
return this;
}
public NutritionFacts build() {
return new NutritionFacts(this);
}
}
private NutritionFacts(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodiium;
carbohydrate = builder.carbohydrate;
}
public int getFat() {
return fat;
}
}
'프로그래밍 > Java' 카테고리의 다른 글
메이븐에 외부라이브러리 추가 (0) | 2020.06.24 |
---|---|
spring mvc + mysql + mybatis + JUnit DB 연결 Test (0) | 2020.06.16 |
spring MVC + mysql + mybatis + Junit DB 접속 테스트 (0) | 2020.06.16 |
mac 전자정부 프레임워크 설치 및 게시판 만들기 (1) | 2020.06.10 |
[스프링 부트] 게시판 만들기 1 - IntelliJ + SpringBoot + Gradle 프로젝트 생성 (0) | 2020.04.22 |