나는 자바가 처음이다. 누군가 내게 설명해 줄 수 lombok
@Builder
생성자 호출 대신 개체를 만드는 방법?롬복 @Builder 대 생성자
MyObject o1 = MyObject.builder()
.id(1)
.name("name")
.build();
MyObject o2 = new MyObject(1, "name")
더 나은 가시성에 대한 질문입니까?
나는 자바가 처음이다. 누군가 내게 설명해 줄 수 lombok
@Builder
생성자 호출 대신 개체를 만드는 방법?롬복 @Builder 대 생성자
MyObject o1 = MyObject.builder()
.id(1)
.name("name")
.build();
MyObject o2 = new MyObject(1, "name")
더 나은 가시성에 대한 질문입니까?
이것은 롬복 특정 기능이 아닙니다,이는 builder pattern.
당신이 20 개 매개 변수를 가진 클래스가 상상라고하며, 그 중 10는 선택 사항입니다. 어떻게 든이 논리를 돌보는 많은 수의 생성자를 만들거나 모든 인수를 가진 생성자를 만들고 일부 장소에서 null을 전달할 수 있습니다. 빌더 패턴이 단순하지 않습니까?
여기서, 클래스는 단일 책임을 가져야합니다. 대부분의 경우, 20 개의 매개 변수가있는 것은 아닙니다. 무언가가 20 개의 필드를 가지고 있다면 오히려 뒤로 물러나서 실제로 한 가지 또는 더 작은 여러 가지로 나누어 져야 할 것이 있는지 확인하고 싶을 것입니다. – GhostCat
고려 :
Order order = new Order("Alan", "Smith", 2, 6, "Susan", "Smith");
매개 변수는 무엇을 의미합니까? 찾으려면 생성자 사양을 살펴 봐야합니다. 빌더와 지금
: 그것은 더 장황한입니다
Order order = Order.builder()
.originatorFirstName("Alan")
.originatorLastName("Smith")
.lineItemNumber(2)
.quantity(6)
.recipientFirstName("Susan")
.recipientLastName("Smith")
.build();
하지만 읽기 매우 분명하고, IDE의 지원을 너무 쉽게 작성할 수 있습니다. 빌더 자체는 약간의 일을 작성하는 것이지만 Lombok과 같은 코드 생성 도구가 도움이됩니다.
일부 사람들은 코드 작성자가 읽을 수 있어야한다고 주장하면 다른 냄새가 드러날 것이라고 주장하는 사람들이 있습니다. 너무 많은 기본 유형을 사용하고 있습니다. 한 클래스에 너무 많은 필드를 넣고 있습니다. 예를 들어, 고려 : 자기 설명 빌더를 사용하지 않고있다
Order order = new Order(
new Originator("Alan", "Smith"),
new ItemSet(new Item(2), 6),
new Recipient("Susan", "Smith"));
을 ... 우리는 단일 책임과 적은 분야로 더 많은 클래스를 사용하고 있기 때문에.
"가시성"이 아니라 "가독성". 그리고 이론적으로 * 빌더로 더 많은 일을 할 수 있습니다. 절반 초기화 된 빌더를 전달할 수 있기 때문입니다. – luk2302
그러나 빌더에는 단점이 있습니다. 모든 필수 매개 변수를 제공하는 _force_하지 않습니다. 예를 들어, 일부 코드를 리팩토링하고 생성자에 필수 매개 변수를 추가하면 빌더 호출자에서 컴파일 오류가 발생하지 않지만 런타임 오류가 발생합니다. – Joel
초기화 된 빌더를 조심스럽게 전달합니다. 그들은 변경할 수 있습니다. 첫 번째로 롬복을 사용하는 큰 이유는 불변의 물건입니다. – slim