
🎨 JAVA Design Pattern - Builder PatternB4 Junior2023. 4. 14. 17:03
Table of Contents
📚 개요
Java 의 디자인 패턴 중 빌더 패턴을 구현 하려고 한다.
단, lombok 을 사용하지 않고 개발할 것이다.
🎬 Get Started
자바에는 객체 인스턴스를 생성하는 다양한 방법이 있다.
https://behoney.tistory.com/61
🎨 JAVA 객체 인스턴스 생성 방식
📚 개요 자바를 공부하다보니 클래스를 인스턴스로 만들 때 new 가 아닌 build 라는 방식을 사용하여 생성하는 것을 목격하곤 알아보게되었다. 🎬 Get Started 일반적으로 인스턴스를 생성하는 방법
behoney.tistory.com
나는 그 중에서 builder 패턴 방식에 집중하였고
이전에는 lombok 사용하여 개발해봤다.
lombok은 일종의 라이브러리이고 이 라이브러리에서 어노테이션 형태로 builder 를 생성해준다.
원리를 모르고 라이브러리를 쓰는 것은 개인적으로 지양해야된다 라는 생각이 크다.
그래서 lombok 없이 만들어보기로 했다.
package com.assignment.flow.user.dto;
public class UserDto {
// 선언부
private String email;
private String password;
private int role;
// 디폴트 생성자
private UserDto() {}
// build 메소드 정의 -- UserDto.builder() 이런식으로 쓸려구 사용
public static Builder builder() {
// 새로운 Builder 객체 반환
return new Builder();
}
// builder 를 받아서 userDto를 생성한다. 아래의 build 메소드 사용을 위해 생성
private UserDto(Builder builder) {
this.email = builder.email;
this.password = builder.password;
this.role = builder.role;
}
// getter
public String getEmail() {
return email;
}
public String getPassword() {
return password;
}
public int getRole() {
return role;
}
// Builder 클래스 정의
public static class Builder {
// 선언부
private String email;
private String password;
private int role;
// 디폴트 생성자
private Builder() {}
// setter
public Builder email(String email) {
this.email = email;
return this;
}
public Builder password(String password) {
this.password = password;
return this;
}
public Builder role(int role) {
this.role = role;
return this;
}
// 모든 인자를 받아서 userDto 를 생성하고 반환한다.
public UserDto build() {
return new UserDto(this);
}
}
// 객체 출력
@Override
public String toString() {
return "UserDto{" +
"email='" + email + '\'' +
", password='" + password + '\'' +
", role='" + role + '\'' +
'}';
}
}
이렇게 하면 Service 단에서
UserDto.builder()
.email(user.getEmail())
.password(user.getPassword())
.role(user.getRole())
.build();
이런식으로 사용할 수 있게된다.
이렇게하면
장점 :
- 직관적이어서 가독성이 매우 뛰어나다.
- 유지보수하기에 좋다.
단점 :
- 초기에 리소스가 더 들어간다
- 성능이 일반 생성자보다는 나쁘다.
뭐 근데 롬복 쓰면 쉽긴하네..
위 코드를 롬복으로 다시 작성하면 아래와 같아진다.
롬복 쓰는 이유가 참 명확해서 좋네..
@Getter
@Setter
@ToString
@Builder
public class UserDto {
private String email;
private String password;
private int role;
private UserDto() {}
}
쓸수 있는건 쓰되...
알고 쓰자..
🔗 출처
'B4 Junior' 카테고리의 다른 글
🎨 JAVA 객체 인스턴스 생성 방식 (0) | 2023.04.11 |
---|---|
🧾 ES5 와 ES6 의 차이 (0) | 2023.04.07 |
📺 Centos7 설치, 초기 세팅 및 jdk 17 설치 (4) | 2023.04.07 |
⚙️ CentOS7 GUI 에서 CLI 로 (0) | 2023.04.07 |
📚 JAVA 기본 개념 - 변수 (0) | 2023.04.05 |
@꿀젤리 :: 꿀꾸는개발자
백엔드는 못말려
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!