builder pattern

서린·2024년 1월 23일

혼자개발

목록 보기
25/82

객체를 정의하고 그 객체를 생성 할 때 보통 생성자를 통해 생성하는것을 생각하는데

Bag bag = new Bag("name", 1000, "memo");

생성자를 통해 객체를 생성하는 것은 몇가지 단점
매개변수가 많아지면 가독성이 좋지 않다
정해진 파라미터 순서대로 값을 넣어줘야 하기 때문에 실수를 하면 잘못된 순서로 매개변수를 전달 될 수 있다
이 있어 객체를 생성하는 별도 builder를 두는 방법을 사용하기도 한다
이 방법을 builder pattern 이라고 한다
객체를 생성할 수 있는 빌더를 builder() 함수를 통해 얻고 거기에 세팅하고자 하는 값을 세팅하고 마지막에 builder()를 통해 빌더를 작동시켜 객체를 생성한다
이 때
직접 객체를 생성하지 않고 필수 매개변수만으로 builder 객체를 생성할 수 있고
builder 객체가 제공하는 일종의 setter메소드를 사용하여 객체를 완성해갈 수 있다

Bag bag = Bag.builder()
				.name("name")
                .money(1000)
                .memo("memo")
                .build();

builder pattern의 장점

  • 가독성이 좋다 : 같은 타입의 다른 변수 값을 바꿔넣는 실수를 방지할 수 있다
  • 순서에 종속적이지 않다 : 어떤 값을 먼저 설정하던 상관 없다

builder pattern의 단점

  • builder class부터 정의해야한다 : 빌더의 생성비용이 크지는 않지만 성능에 민감한 상황에서는 문제가 될 수 있다
  • builder pattern의 코드가 다소 장황하다 : 따라서 매개변수가 4개 미만이라면 생성자를 사용하는것이 더 좋다고 한다 하지만 api는 시간이 지날 수록 많은 매개변수를 갖는 경향이 있기 때문에 애초에 builder pattern으로 시작하는 편이 나을 수 도 있다

0개의 댓글