-
디자인 패턴- BuilderSpring Boot 2022. 1. 19. 02:37
스프링은 객체 지향 설계 원칙을 극한으로 적용하고 있는 프레임워크다.
객체 지향을 정말 잘 따르는 Best Practice"들이 있는데, 그것이 디자인 패턴이 되겠다.
디자인패턴은 응집도는 높고 결합도는 낮은 코드 디자인의 패턴이다.
<코드의 바뀌는 부분>과 <바뀌지 않는 부분>을 구분해서 바뀌는 부분을 바꿔도, 바뀌지 않는 부분에는 영향을 끼치지 않는 것.
목차
- Builder 패턴
Builder 패턴
스프링으로 연습 삼아 Todo list를 간단히 만들었는데,
DTO를 사용할때 this.필드 = 매개변수.getter; 로 값을 할당하는게 아니라 @Builder라는 이상한 어노테이션을 사용하는 것을 보았다.
쓰면 뭐가 좋고 정체가 무엇일까?
@Builder @NoArgsConstructor @AllArgsConstructor @Data public class TodoDTO { private String id; private String title; private boolean done; public TodoDTO(final TodoEntity entity) { // 매개변수 재할당 방지용도로 final this.id = entity.getId(); this.title = entity.getTitle(); this.done = entity.isDone(); // 불리언은 자동으로 getDone이 아니라 isDone으로 바뀜. } public static TodoEntity toEntity(final TodoDTO dto) { return TodoEntity.builder() .id(dto.getId()) .title(dto.getTitle()) .done(dto.isDone()) .build(); } }
@Builder 어노테이션은 롬복의 Builder 디자인 패턴을 사용할 수 있게 만들어주는 어노테이션이다.
빌더라는 객체를 만들어서 값을 할당해주는 디자인 패턴이다.
빌더를 사용하게 되면
1) 인자가 여러개일 경우 순서와 상관 없이 값 할당
2) 캡슐화 기능. 무분별한 setter 방지
3) 반복적으로 길게 짜야하는 코드를 줄여줄 수 있다.
Source
https://4z7l.github.io/2021/01/19/design_pattern_builder.html
https://zorba91.tistory.com/298
반응형'Spring Boot' 카테고리의 다른 글
스프링 개발자가 가장 많이하는 실수 (0) 2024.06.19 Port Adapter 패턴이란? (클린아키텍처) (1) 2024.04.20 DDD 기본개념 톺아보기 (1) 2024.04.20 멀티모듈 잘 설계해보기 (1) 2024.04.18 JPA 개념 정리 - 영속성 컨텍스트, 트렌젝션, 1차 캐시, Flush, 쓰기 지연 (0) 2022.01.16