Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 기본생성자
- 상속
- java
- 캡슐화
- 깃허브
- 브랜치
- 에러
- 부트캠프
- CRUD
- HTML
- SQL
- 부스트코스
- stringbuffer
- html tag
- entity
- Python
- 자바
- 알고리즘
- github
- @builder
- 코드업
- HashSet
- @NoArgsConstructor
- DTO
- Codeup
- git
- lv1
- @AllArgsConstructor
- 프로그래머스
- 파이썬
Archives
- Today
- Total
잉?
[SpringBoot] 빌더 패턴(Builder Pattern)이란? + 사용 이유 본문
자바(Java)/스프링부트(SpringBoot)
[SpringBoot] 빌더 패턴(Builder Pattern)이란? + 사용 이유
Jye_647 2023. 6. 30. 23:24빌더 패턴에 대해 알아보자
객체를 생성하는데 생성자 패턴 / 정적 메서드 패턴 / 수정자 패턴 / 빌더 패턴 등이 있다.
이중 권장되는 패턴이 빌더 패턴이다.
1. 필요한 데이터만 설정할 수 있다.
- 새로운 변수가 추가되어도 기존 코드에 영향을 주지 않는다.
- 불필요한 코드의 양을 줄인다.
- 반복적인 변경이 있을 때 유용하다.
객체를 생성해야 할 때 하나의 파라미터가 필요 없는 상황이라고 한다면,
생성자 패턴이나 정적 메서드 패턴 같은 경우 더미 값을 넣어주거나 파라미터가 없는 생성자를 새로 만들어줘야 한다.
Flower flower = new Flower("rose", "red");
public class Flower{
private String name;
private String color;
public Flower(String name){
this.name = name;
}
public static Flower of(String name){
return new Flower(name, "red");
}
}
2. 가독성이 높은 코드이다.
Flower flower = Flower.builder()
.name("rose")
.color("red")
.build();
3. 변경 가능성을 최소화 할 수 있다.
- Setter 패턴을 사용할 경우 변경 가능성을 열어두기 때문에 유지보수 시에 잘못된 값이 들어간 지점을 찾기 어렵다.
(@Setter는 최소한으로 쓰는 것이 현명하다.)
- 변수를 final로 선언함으로서 불변성을 확보하는 것이 좋다.
(클래스 위 @Builder, @RequiredArgsConstructor 적용)
- final을 붙일 수 없는 경우라도 Setter를 넣어주지 않아도 된다.
(클래스 위 @Builder, @AllArgsConstructor 적용)
'자바(Java) > 스프링부트(SpringBoot)' 카테고리의 다른 글
[SpringBoot] Service단에서의 DTO <--> Entity의 변환. (0) | 2023.07.11 |
---|---|
[SpringBoot] Entity란? + @Table, @NoArgsConstructor, @AllArgsConstructor (0) | 2023.07.10 |
[SpringBoot] 빌더 패턴의 “toEntity”와 “of” 메서드 (0) | 2023.07.04 |
[SpringBoot] Path Variable과 Request Param의 차이점 (0) | 2023.06.27 |
[SpringBoot] 3 Layer Architecture를 알아보자 (0) | 2023.06.23 |
Comments