✍️ 빌더 패턴, Java에서 찾아보기
Java의 StringBuilder에서 빌더 패턴을 찾아볼 수 있다.
빌더에 해당하는 StringBuilder를 생성하고, 빌더가 제공하는 append 메서드로 인스턴스를 구성하고, 최종적으로 toString을 호출해서 String을 생성하는 일련의 과정이 빌더 패턴의 그것과 동일하다.
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
String result = stringBuilder
.append("hello ")
.append("world!")
.toString();
System.out.println(result);
}
}
또 다른 예제로는 Stream API가 제공하는 StreamBuilder에서 빌더 패턴을 찾아볼 수 있다.
StreamBuilder를 사용하면 Stream에 들어갈 요소를 add 할 수 있고, 최종적으로 build를 호출해서 stream을 생성할 수 있다.
public class StreamExample {
public static void main(String[] args) {
Stream.Builder<String> stringBuilder = Stream.builder();
Stream<String> stream = stringBuilder.add("hello").add("world!").add("bye..").build();
stream.forEach(System.out::println);
}
}
마지막으로 lombok이 제공하는 @Builder 어노테이션이 있다.
빌더 패턴을 필요로 할 때, 직접 빌더 패턴에 관련된 API를 구현하는 것이 아니라 lombok @Builder 어노테이션만 클래스 위에 붙여놓으면 클래스를 컴파일 할 때 자동으로 클래스 내부에 빌더 API가 만들어진다. 우리는 사용만 하면 된다.
import lombok.Builder;
@Builder
public class LombokExample {
private int id;
private String name;
private String grade;
public static void main(String[] args) {
LombokExample example = LombokExample.builder()
.id(123)
.name("kang")
.grade("freshman")
.build();
}
}
🍊빌더 패턴, Spring에서 찾아보기
Spring에선 UriComponents 인스턴스를 Uricomponentsbuilder를 통해서 만들 수 있다.
참고로 Uricomponentsbuilder를 사용하면 uri를 하드코딩해서 만드는 것보다 안전하게 만들 수 있다.
public class SpringExample {
public static void main(String[] args) {
UriComponents uriComponents = UriComponentsBuilder.newInstance()
.scheme("https")
.host("kangworld.tistory.com")
.build();
System.out.println(uriComponents);
}
}
// https://kangworld.tistory.com
인프런의 백기선님의 강의 코딩으로 학습하는 GoF의 디자인 패턴을 참고해서 작성했습니다.
'Java > Design Pattern with Java' 카테고리의 다른 글
[객체 생성 패턴] Chapter 5-2. Prototype Pattern : 패턴 적용하기 (0) | 2022.05.30 |
---|---|
[객체 생성 패턴] Chapter 5-1. Prototype Pattern : 패턴 소개 (0) | 2022.05.24 |
[객체 생성 패턴] Chapter 4-4. Builder Pattern : 장단점 (0) | 2022.05.16 |
[객체 생성 패턴] Chapter 4-3. Builder Pattern : 심플 빌더 (0) | 2022.05.12 |
[객체 생성 패턴] Chapter 4-2. Builder Pattern : 패턴 적용하기 (0) | 2022.05.09 |