복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴.
생성자에 인자가 많을 때는 빌더 패턴을 고려해보는 것이 좋다.
인자가 많을 경우에 쉽고 안전하게 객체를 생성할 수 있다.
인자의 순서와 상관없이 객체를 생성할 수 있다.
적절한 책임을 이름에 부여하여 가독성을 높일 수 있다.
(어떤 변수가 어떤 의미인지 쉽게 파악 가능하다.)
생성자 패턴은 지금 채워야할 필드가 무엇인지 명확히 지정할 수 없지만 빌더 패턴을 사용하면 어느 필드에 어떤 값을 채워야할 지 명확하게 지정할 수 있다.
원하는 변수만 객체에 삽입 가능하게 한다.
무분별한 setter 남용 x
User newUser = User.builder()
.username(user.get("username"))
.password(passwordEncoder.encode(user.get("password")))
.name(user.get("name")).build();