BootCamp 49day

GyeongNamΒ·2024λ…„ 1μ›” 25일
0

BootCamp

λͺ©λ‘ 보기
43/49
post-thumbnail

πŸ“… 2024λ…„ 01μ›” 23일


49일차 : Spring (9)

@Builder

  • λΉŒλ” νŒ¨ν„΄(Builder Pattern)은 객체 생성과정을 효과적으둜 μΆ”μƒν™”ν•˜κ³  λ³΅μž‘ν•œ 객체λ₯Ό μƒμ„±ν•˜λŠ” λ””μžμΈ νŒ¨ν„΄μ΄λ‹€.
  • 일반적으둜 객체λ₯Ό μƒμ„±ν•˜λŠ”λ° λ§Žμ€ νŒŒλΌλ―Έν„°κ°€ ν•„μš”ν•˜κ±°λ‚˜, μƒμ„±μžμ— λ§Žμ€ 인자λ₯Ό μ „λ‹¬ν•˜λŠ” 것이 λ³΅μž‘ν•˜κ³  ν˜Όλž€μŠ€λŸ¬μšΈ λ•Œ λΉŒλ” νŒ¨ν„΄μ΄ 유용
    λΉŒλ” νŒ¨ν„΄μ˜ ꡬ성 μš”μ†Œ
    ꡬ성 μš”μ†Œ μ„€λͺ…
    Product
    (생성될 객체)
    λΉŒλ” νŒ¨ν„΄μ„ 톡해 생성될 객체λ₯Ό λ‚˜νƒ€λƒ„
    Builder Interface
    (λΉŒλ” μΈν„°νŽ˜μ΄μŠ€)
    객체λ₯Ό μƒμ„±ν•˜λŠ”λ° ν•„μš”ν•œ 단계듀을 μ •μ˜ν•œ μΈν„°νŽ˜μ΄μŠ€
    Concrete Builder
    (ꡬ체적인 λΉŒλ”)
    Builder μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μ—¬ μ‹€μ œλ‘œ 객체λ₯Ό μƒμ„±ν•˜λŠ” 클래슀
    Director
    (객체 생성을 μ§€μ‹œν•˜λŠ” 클래슀)
    λΉŒλ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 객체λ₯Ό μƒμ„±ν•˜κ³ , ν•„μš”ν•œ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•˜λŠ” 클래슀
@Entity
@Getter
/*
@Builder 톡해 λΉŒλ”νŒ¨ν„΄μœΌλ‘œ 객체 생성
λ§€κ°œλ³€μˆ˜μ˜ μƒˆνŒ… μˆœμ„œ, λ§€κ°œλ³€μˆ˜μ˜ 개수 등을 μœ μ—°ν•˜κ²Œ μ„ΈνŒ…
 */
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Author {

}

Hello 클래슀 λΉŒλ”νŒ¨ν„΄ λ§Œλ“€μ–΄λ³΄κΈ°

@Data
@NoArgsConstructor
public class Hello {
    private String name;
    private String email;
    private String password;
    public Hello (MyBuilder myBuilder){
        this.name = myBuilder.name;
        this.email = myBuilder.email;
        this.password = myBuilder.password;
    }
    public  static MyBuilder builder(){
        return new MyBuilder();
    }
    public static class MyBuilder{
        private String name;
        private String email;
        private String password;
        public MyBuilder name(String name){
            this.name = name;
            return this;
        }
        public MyBuilder email(String email){
            this.email = email;
            return this;
        }
        public MyBuilder password(String password){
            this.password = password;
            return this;
        }
        public Hello build(){
            return new Hello(this);
        }
    }
}

Spring μ‹€μŠ΅ github 링크

profile
503 Service Unavailable Error

0개의 λŒ“κΈ€