setter
메소드를 통해 객체에 값을 할당하는 방법이다.set
하기전까지는 객체가 일관성이 무너진 상태에 놓인다. 이러한 문제때문에 자바 빈즈 패턴에서는 클래스를 불변으로 만들 수 없다.빌더 객체
를 얻고, 그 이후에 선택적으로 필요한 setter
메소드를 통해 값을 할당하고 마지막에 build
메소드를 통해 매개변수를 가지고 실제 얻고자 하는 객체를 생성해내는 방식이다.생성자나 정적 팩토리 메소드가 처리해야할 매개변수가 많을 경우 빌더 패턴을 선택하는 것이 더 낫다. 매개변수 중 다수가 필수가 아니거나 같은 타입이면 더 그렇다. 빌더는 점층적인 생성자보다 클라이언트 코드를 읽고 쓰기가 훨씬 간결하고, 자바빈즈보다 훨씬 안전하다.