@builder 빌더패턴
빌더 패턴이란
객체를 생성하는 패턴으로 롬복 라이브러리를 사용하신다면 다음과 같이 개체에 @Builder 어노테이션을 쓰고 코딩을 하면 됩니다.
장점
-
객체 생성을 효율적으로 할 수 있습니다.
-
가독성을 높일 수 있습니다.
새로운 Member의 객체를 생성한다고 가정해 봅시다. new Member()생성자를 사용한다면 ()안에지정해둔 전체 필드가 전부 담겨야 합니다. 상황에 따라 필드를 달리 받아 넘기는 경우가 있는데 이런 때 기존 방식은 유동적이지가 않죠. 그럴 때 빌더 패턴을 사용하면 원하는 피드만 가지고 객체를 생성할 수 있습니다.
Member member = new Member(1,"admin","1234","관리자","여","0101112222");
위 같은 생성자 함수를 보면 괄호안의 값이 각각 뭘 의미하는지 바로 파악하기 어렵습니다. 게다가 변수가 여러개면 더욱 확인하기 어렵겠죠. 그럴 때 빌더패턴을 사용한다면 다음과 같이 필드값을 파악하기 쉽습니다.
다만 요즘 인텔리제이는 생성자 함수에서 필드값을 보여주는 편의 기능이 있더군요.
불안전한 빌더 패턴 VS 안전한 빌더 패턴
빌더 패턴을 사용할 때 Assert를 사용하지 않으면 not null인 필드에 null값을 걸러내지 못합니다.
지금 Member는 id,pw,tel이 null값이면 안되는데 그 중에 하나라도 null값이 들어 간다면
안전한 빌더 패턴의 경우엔
만약 그 중에 하나라도 갑이 null일 경우 Assert.hasText에서 지정한 경고문이 나오고 tests failed가 뜹니다.
하지만 불안전한 빌더 패턴에선 test passed되는 모습을 볼 수 있습니다.
때문에 Assert를 써서 null값을 걸러내도록 해야 합니다.
<참고> [https://johngrib.github.io/wiki/builder-pattern/](https://johngrib.github.io/wiki/builder-pattern/) 참고>
댓글남기기