정보처리기사를 공부하며 , 빌더 패턴이라는 패턴을 확인하였다.
실제로 프로젝트를 위한 협업을 진행하며 @builder라는 어노테이션을 확인하였고, 어떨때
생성자 대신 해당 @builder를 사용하는지, 그 이유는 무엇인지 정리하기로 하였다.
@builder의 장점
<원하는 값만 넣을 수 있고, 다른 사람이 코드를 봤을때 명확하다.>
@Table(name = "product")
@Entity
@Getter
@RequiredArgsConstructor
@AllArgsConstructor
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "product_id")
private Long productId ;
@Column(name = "product_name")
private String productName;
@Column(name = "price")
private int price ;
이게 내가 만들었던 코드. Allrequiredconsturctor로 생성자를 열면
Product = new Product(1,"햄버거",12000,3,4,5) 이렇게 보기 복잡하게 객체를 초기화 해야 한다.
@Builder
public Product(String productName, int price, byte[] imageProduct, byte[] imageReal, LocalDate createAt, int categoryId, LocalDate expireAt, String nickName, String userEmail) {
this.productName = productName;
this.price = price;
this.ImageProduct = imageProduct;
this.ImageReal = imageReal;
this.createAt = createAt;
this.categoryId = categoryId;
this.expireAt = expireAt;
this.nickName = nickName;
this.userEmail = userEmail;
}
이게 변환된 코드 .
이것을 활요하면 product myproduct = Product.builder().price(12000).productname("햄버거") 등등..
1. 보기에도 명확하고
2. 내가 어떠한 값들을 넣을건지도 조정이 가능하다.
Product product = Product.builder() .categoryId(1) .build();
만 진행하며, categoryid는 1이고 나머지는 0인 형태가 된다.
이것이 GOF 패턴에서 암기하였던 BUILDER이자, 각 객체를 조힙하는 형태의 장점이다.
'프로젝트 > 장애인 PT 플랫폼, PTFD' 카테고리의 다른 글
Spring Security (MSA)를 하며 만난 문제들 (0) | 2024.04.08 |
---|---|
RESTFUL URL 규칙 + 협업시 지켜야 할 것들 (0) | 2024.04.06 |
DELETE , UPDATE 쿼리 관련 동시성 문제 (0) | 2024.03.30 |
결제 과정 완료 (1) | 2024.02.27 |
프로젝트 TEST (0) | 2024.02.25 |