[객체 생성 패턴] Chapter 4-5. Builder Pattern : Java와 Spring에서 찾아보는 빌더 패턴

 

✍️ 빌더 패턴, 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의 디자인 패턴을 참고해서 작성했습니다.

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com