π Builder Pattern μ΄λ
κ°μ²΄μ μμ± λ¨κ³λ€μ μΊ‘μννμ¬ κ°μ²΄μ μμ±μ μ μ°νκ² ν΄μ£Όλ ν¨ν΄μ λλ€. κ·Έλμ λΉλ ν¨ν΄μ μμ±μμ λ€μ΄κ° λ§€κ° λ³μκ° λ§λ μ λ μ°¨λ‘λλ‘ λ§€κ° λ³μλ₯Ό λ°μλ€μ΄κ³ λͺ¨λ λ§€κ° λ³μλ₯Ό λ°μ λ€μ μ΄ λ³μλ€μ ν΅ν©ν΄μ ν λ²μ μ¬μ©ν©λλ€.
π Builder Pattern
Builder Patternμ μ₯μ μ λν μμλ₯Ό μμ보μ. Builder Patternμ μ₯μ μ λ€μκ³Ό κ°μ κ²λ€μ΄ μλ€.
- κ°λ μ±μ λμΌ μ μλ€.
- λΆλ³μ±μ ν보ν μ μλ€.
- νμν λ°μ΄ν°λ§ μ€μ μ΄ κ°λ₯νλ€.
μ΄μ μμλ₯Ό μ°¨κ·Όμ°¨κ·Ό 보μ
π 첫λ²μ§Έλ‘ μ΄λ€ μΈ‘λ©΄μμ κ°λ μ±μ λμ¬μ£Όλμ§ μμ보μ.
public class User {
private Long id;
private String email;
private String name;
private String password;
private int age;
public User(Long id, String email, String name, String password, int age) {
this.id = id;
this.email = email;
this.name = name;
this.password = password;
this.age = age;
}
}
μ°μ κΈ°λ³Έμ μΈ μμ±μλ‘ λκΈ°λ λ°©λ²μ΄λ€.
User user = new User(1L,"rrr11@naver.com","KK","l12313123",14);
λͺ¨λ λ°μ΄ν°λ₯Ό μμ±μλ‘ λκΈ°λ©΄ μμ²λΌ μμ±νλ€ λ³΄λ©΄ μΈμκ° λ§μμ§λ©΄ μμλ₯Ό λ°κΏ λ£μ μλ μκ³ μ§κ΄μ μΌλ‘ νλμ μμ보기 μ΄λ ΅λ€λ λ¨μ μ΄ μ‘΄μ¬νλ€. μ΄μ μ΄ λ¬Έμ λ₯Ό μ μ°¨ ν΄κ²°ν΄λ³΄μ.
@Builder
public User(Long id, String email, String name, String password, int age) {
this.id = id;
this.email = email;
this.name = name;
this.password = password;
this.age = age;
}
μμ±μλ₯Ό μμ²λΌ λΉλ ν¨ν΄μΌλ‘ λκΈ°λ©΄ κ°μ μ€μ ν λ
User user = User.builder()
.id(1L)
.email("rrr11@naver.com")
.name("KK")
.password("l12313123")
.age(14)
.build();
μ΄λ°μμΌλ‘ νλμ μ§κ΄μ μΌλ‘ 보μ΄κ² κ°μ μ½μ ν μ μλ€.
π λλ²μ§Έλ‘ λΆλ³μ±μ ν보νλ μμλ₯Ό 보μ
μλ° λΉ ν¨ν΄μΌλ‘ @Setterλ‘ κ°μ μ½μ ν μ μλλ° μ΄ λ°©μμ κ°λ μ±λ μμ±μ ν¨ν΄λ³΄λ€ μ’μμ§κ³ κ°μ²΄λ₯Ό μμ±νκΈ°μλ νΈν΄μ‘μ§λ§, ν¨μ νΈμΆ ν λ²μΌλ‘ κ°μ²΄λ₯Ό μμ±ν μ μκ³ κ°μ²΄ μΌκ΄μ±μ΄ μΌμμ μΌλ‘ κΉ¨μ§ μ μλ€.
@Setter
public class User {
private Long id;
private String email;
private String name;
private String password;
private int age;
}
User user = new User();
user.setId(1L);
user.setEmail("rrr11@naver.com");
user.setName("KK");
user.setPassword("l12313123");
user.setAge(23);
μμ²λΌ @Setterλ₯Ό μ΄μ΄λλ κ²μ λΆνμνκ² νμ₯ κ°λ₯μ±μ μ΄μ΄λλ κ²μ΄κΈ° λλ¬Έμ Open-Close λ²μΉμλ μλ°°κ° λκ³ , λΆνμν μ½λ 리λ©μ μ λ°νλ€.
π μΈλ²μ§Έλ‘ νμν λ°μ΄ν°λ₯Ό μ€μ νλ μμλ₯Ό 보μ.
μ°μ λ°μ΄ν°λ₯Ό μ μ‘ν λ κ·Έ μμ μ νμν λ°μ΄ν°λ§ λκΈΈ μ μλ€. νμν λ°μ΄ν°λ§ λκΈ°κ² λλ©΄ μ μ μ 보μ ν¨μ€μλ λ±μ λ ΈμΆνμ§ μμ μ μκΈ° λλ¬Έμ 보μμ μΌλ‘ μ΄μ μ κ°μ§λ€.
μΌλ¨ ν¨μ€μλμ μμ΄λλ λκΈ°λ©΄ μλλ€κ³ κ°μ μ ν΄λ³΄μ.
κΈ°λ³Έμ μΈ μμ±μλ‘ λκΈ°λ©΄ μ°μ λͺ¨λ λ°μ΄ν°κ° λμ΄κ°λ€. μ΄ λ¬Έμ λ₯Ό μμ±μλ‘ ν΄κ²°ν΄λ³΄μ.
public class User {
private Long id;
private String email;
private String name;
private String password;
private int age;
public User(String email, String name, int age) {
this.email = email;
this.name = name;
this.age = age;
}
public User(Long id, String password) {
this.id = id;
this.password = password;
}
}
μ΄λ¬ν λ°©μμΌλ‘ λΆλ¦¬ν΄μ νλ©΄ μμ΄λμ ν¨μ€μλλ₯Ό λΉΌκ³ λκΈΈ μ μλ€. μ΄λ° μμΌλ‘ λΆλ¦¬νλ©΄ μ½λκ° μ§μ λΆ ν΄μ§κ³ κ°λ μ±μ΄ λ¨μ΄μ§λ€.
λΉλ ν¨ν΄μ μ¬μ©ν΄λ³΄μ
@Builder
public User(Long id, String email, String name, String password, int age) {
this.id = id;
this.email = email;
this.name = name;
this.password = password;
this.age = age;
}
User user = User.builder()
.email("rrr11@naver.com")
.name("KK")
.age(14)
.build();
μ΄λ°μμΌλ‘ νμν λ°μ΄ν°λ§ μ€μ ν μ μλ€. κ·Έλ¬λ―λ‘ λΆνμν μ½λλ₯Ό μ€μ¬μ€λ€. μ΄λ¬ν λ°©λ²μΌλ‘ μμ λ§λ€ νμν λ°μ΄ν°λ₯Ό μν°ν°κ°μ²΄ λλ λλ©μΈ κ°μ²΄λ‘λΆν° DTOλ‘ λ§λ€μ΄ λκ²¨μ€ μ μλ€.
DTO μμ
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
public class UserDto {
private String email;
private String name;
private int age;
}
μ΄λ°μμΌλ‘ DTOλ₯Ό λ§λ€ μ μλ€.
κ·Έλ¬λ λΉλ ν¨ν΄μ μ₯μ λ§ μ‘΄μ¬νλ κ²μ΄ μλλ€.
μ°μ κ°μ²΄λ₯Ό μ¬μ©νλ €λ©΄ λΉλ κ°μ²΄λ₯Ό μμ±ν΄μΌ νκ³ , λ€λ₯Έ ν¨ν΄λ³΄λ€ λ§μ μ½λλ₯Ό μꡬνκΈ° λλ¬Έμ μΈμκ° μΆ©λΆν λ§μμ§ μν©μμ μ΄μ©ν νμκ° μλ€.
GITHUB μμ€μ½λ : https://github.com/ryudongjae/blog-ex
GitHub - ryudongjae/blog-ex
Contribute to ryudongjae/blog-ex development by creating an account on GitHub.
github.com
REPERENCE
'Dev > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA]λ°λ³΅λ¬Έ μμμ List μμ μμ (0) | 2022.03.04 |
---|---|
[Code] Refactoring , 리νν λ§ (0) | 2022.02.28 |
[JAVA]Optionalμ΄λ? (0) | 2021.06.17 |
[JAVA]μμ(Inheritance) (0) | 2021.06.16 |
[JAVA]μΌνμ°μ°μ(Ternary Operator) (0) | 2021.06.15 |