Builder 패턴을 사용해야하는 이유

주현·2024년 1월 30일

공부방

목록 보기
2/14

객체를 생성할 때 저는 빌더 패턴을 사용하는데, 왜 그 빌더 패던을 사용해야 할까요??


빌더패턴(Builder)을 왜 사용해야하나?

< 1. 필요한 데이터 설정 가능 >

이렇게 User 객체가 있다고 했을떄, 이름만 필요하고 다른 필드들은 필요가 없다고 한다. 생성자를 이용할 경우 나는, age,length에 더미데이터를 넣어주거나 name만 필요로 하는 생성자를 생성해줘야한다.

하지만, 한 두번만 사용한다면 상관이 없으나, 요구사항이 달라지거나 반복적인 변경을 필요로 하면 많은 시간 낭비를 요구하게 된다. 허나 빌더패턴을 이용하면 이를 동적으로 처리할 수 있다.


< 2. 유연성 확보 >

만약 User 클래스에 성별이라는 새로운 필드(변수)를 추가해야 한다고 하면,이미 이름으로만 생성자로 User객체를 만드는 코드가 있다한다면, 만약 이 생성자 코드로 100개넘게 객체를 생성한다면, 이 코드를 전부다 바꿔줘야하는 끔찍한 일이 발생한다.

하지만, 빌더패턴을 기반으로 코드가 작성되어 있다면 상관이 없다. 빌더 패턴은 유연하게 객체의 값을 설정하도록 돕기 떄문이다.


< 3. 가독성 높이기 >


이렇게 코드를 작성했다면, 앞에 매개변수가 임의로 표시가 되긴하지만, 이는 intellj가 설정해줘서 그런가..? 하여튼 원래라면 앞에 저 매개변수가 무엇인지 표시가 되지 않기떄문에, 주현,25가 무엇을 설명하는지 알 수가 없다. 허나

빌더패턴을 사용해주게 되면, 이 값들이 무엇을 의미하는지 한 눈에 쉽게 알 수 있게 되어, 가독성을 높일 수 있다.


< 4.변경 가능성 최소화>

많은 개발자들은 setter패턴을 자주 사용한다. 허나, 이 패턴을 사용한다는 것은 불필요하게 변경 가능성을 열어두는 것이다. 이는 유지보수 시 값이 할당된 지점을 찾기 힘들게 만들며 불필요한 코드 리딩을 유발한다. 만약 할당하는 시점이 객체 생성 뿐이라면 객체에 잘못된 값이 들어왔을 때, 그 지점을 찾기가 매우 쉬우므로 유지보수성이 높아질 것이다. 그렇기에 클래스의 변수는 변경가능성을 최소화하게 한다.

이렇게 유저 클래스를 final을 붙여 불변성을 높일 수 있다. 허나, final을 붙일 수 없는 경우라면, setter을 넣어주지 않도록 한다.

0개의 댓글