public class User {
    private int id;
    private String username;
    private String password;
    private String email;

    public static User builder() {
        return new User();
    }

    public User id(int id) {
        this.id = id;

        return this;
    }

    public User username(String username) {
        this.username = username;

        return this;
    }

    public User password(String password) {
        this.password = password;

        return this;
    }

    public User email(String email) {
        this.email = email;

        return this;
    }

    public static void main(String[] args) {
        User user = User.builder().username("ssar").email("[email protected]");
        User user2 = User.builder().username("cos").id(1);

        System.out.println(user);
        System.out.println(user2);
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\\'' +
                ", password='" + password + '\\'' +
                ", email='" + email + '\\'' +
                '}';
    }
}

Untitled

빌더 패턴의 정의

빌더 패턴(Builder Pattern)은 객체 생성을 더 유연하고 가독성 있게 만들기 위한 디자인 패턴입니다. 이 패턴은 객체를 생성하는 복잡한 과정을 추상화하고, 객체를 생성하는 방법을 분리하여 사용자가 객체를 쉽게 생성할 수 있도록 합니다. (생성 디자인 패턴, 최초에 초기화 하는 패턴)

빌더 패턴의 장점

  1. 유연한 객체 생성: 객체를 생성하는 과정을 단순화하고 유연하게 만들어줍니다.
  2. 가독성 향상: 가독성이 뛰어나며, 객체 생성 과정이 명확하게 표현됩니다.
  3. 불변성 보장: 생성된 객체의 불변성을 보장하면서 필요한 속성을 설정할 수 있습니다.
  4. 가변 인자(Varargs) 처리: 다양한 인자를 처리하기 용이합니다.
  5. 복잡한 객체 생성 처리: 복잡한 객체를 생성하는 과정을 단순화하고 캡슐화할 수 있습니다.

빌더 패턴을 쓰면

우리가 필요한 생성자를 모두 만들어둘 필요가 없어진다. 그냥 다 만들어두고

필요한거만 찾아서 적어줄 수 있다.