*이 페이지는 아래와 같은 순서로 작성되었습니다.
@Builder
를 소개한다.생성자와 정적 팩토리는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다.
→ 선택적 매개 변수가 많은 경우에 사용하는 생성자 패턴에 대해서 살펴보자.
필수 인자를 받는 생성자를 정의한 후, 선택적 인자를 하나씩 추가해가며 정의하는 방식이다.
예제 코드
public class Item {
private final String itemCd; // 필수
private final String itemNm; // 필수
private final String ctgId; // 필수
private final BigDecimal price; // 선택
private final String sellTypeCd; // 선택
public Item(String itemCd, String itemNm, String ctgId){
this(itemCd, itemNm, ctgId, 0);
}
public Item(String itemCd, String itemNm, String ctgId, BigDecimal price){
this(itemCd, itemNm, ctgId, price, "10");
}
public Item(String itemCd, String itemNm, String ctgId, BigDecimal price, String sellTypeCd){
this.itemCd = itemCd;
this.itemNm = itemNm;
this.ctgId = ctgId;
this.price = price;
this.sellTypeCd = sellTypeCd;
}
}
매개변수가 없는 생성자로 객체를 만든 후
setter
메서드로 원하는 매개변수의 값을 설정하는 방식이다.
예시 코드
public class Item {
private String itemCd; // 필수
private String itemNm; // 필수
private String ctgId; // 필수
private BigDecimal price; // 선택
private String sellTypeCd; // 선택
public Item() {}
public void setItemCd(String itemCd){ this.itemCd = itemCd; }
public void setItemNm(String itemNm){ this.itemNm = itemNm; }
public void setCtgId(String ctgId){ this.ctgId = ctgId; }
public void setPrice(BigDecimal price){ this.price = price; }
public void setSellTypeCd(String sellTypeCd){ this.sellTypeCd = sellTypeCd; }
}
사용법
Item item = new Item();
item.setItemCd("12345678");
item.setItemNm("Effective Java 3/E");
item.setCtgId("9999");
item.setPrice("36000");
item.setSellTypeCd("20");