객체 생성을 위한
- 생성자 패턴
- 정적 메소드 패턴
- 수정자 패턴
- 빌더 패턴
등 다양하게 사용할 수 있는데, 생성간 빌더패턴을 왜 선호할까?
프로젝트에서 Builder 패턴을 사용해서 entity 설정을 진행했다!
당시 왜 사용했는지 이유 없이 썻는데, 자세히 알아보자
나는, 생성자로 할때 매개변수(parameter) 변경 간 계속해서 추가해줘야하는 번거로움 때문에 필요한 데이터만 넣을 수 있도록 하기 위해 Builder 를 사용하는 것 같았다. 그리고 Setter 도 함께 써줬는데 아마 엔티티를 수정할 때 필요한 메소드로 생각했는데 크나큰 오류였다.
자료 찾아보니 빌더 패턴의 장점을 찾아 볼 수 있었다.
- 필요한 데이터만 설정할 수 있음
- 유연성을 확보할 수 있음
- 가독성을 높일 수 있음
- 변경 가능성을 최소화할 수 있음
생성자를 여러개 안만들어도됨 (필요한 데이터만 설정할 수 있음)
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String userName;
private String nickName;
private String password;
}
만약 User 가 이런 필드를 가지고 있다 했을때, 만약 필요없는 내용으로 엔티티를 생성하고 싶을땐 아래와 같이 반복적인 작업이 필요하다.
롬복 어노테이션 하나로 빌더패턴을 사용할 수 있다.
매개변수 추가시 코드 수정에 대한 부담을 줄일 수 있음 (유연성 확보가능)
User 엔티티에 필드가 추가 되었을때 모든 로직 생성자 패턴 코드를 수정해야되는 번거로움이있다.
코드리딩이 생성자보다 편함
위에랑 비교해도 확실히 가독성이 좋아보인다.
setter 사용시 불변성에 대한 가능성을 높임
Setter 를 사용 시 객체의 변경 가능성을 열어 두는 것
만약 setter 코드를 사용했을때 다른사람이 찾아 보기 전까지 어디서 할당 되었는지 판단하기 어려울 것이다.
즉, 유지보수성 측면에서도 변경 가능성을 최소화 하는것이 좋다.
참고자료
https://stackoverflow.com/questions/328496/when-would-you-use-the-builder-pattern
When would you use the Builder Pattern?
What are some common, real world examples of using the Builder Pattern? What does it buy you? Why not just use a Factory Pattern?
stackoverflow.com
https://mangkyu.tistory.com/163
[Java] 빌더 패턴(Builder Pattern)을 사용해야 하는 이유
객체를 생성하기 위해서는 생성자 패턴, 정적 메소드 패턴, 수정자 패턴, 빌더 패턴 등을 사용할 수 있습니다. 개인적으로 객체를 생성할 때에는 반드시 빌더 패턴을 사용해야 한다고 생각하는
mangkyu.tistory.com
'2023년 > ETC💁♂️' 카테고리의 다른 글
[ETC] 노션(notion) 사용자 글꼴로 변경하여 사용하기! (배달의 민족 글씨체 적용) (0) | 2023.07.13 |
---|---|
[git] github repository description 추가 또는 바꾸는 방법 (0) | 2023.05.25 |
요약 간단정리 spring data jpa, jpa, hibernate,orm, jdbc api, jdbc driver, dbms (0) | 2023.05.24 |
JPA entity 에서 id 를 int 아닌 Long 타입으로 하는 이유 ( + Wrapper 클래스 ) (1) | 2023.05.23 |
[React] React + SpringBoot axios 통신간 발생한 cors 에러 해결방법 (0) | 2023.04.14 |