그 외/Java

자바 빌더 패턴(Builder Pattern)

poppy 2020. 9. 21. 17:40
반응형

빌더패턴

빌더패턴은 디자인 패턴 중 하나로써 생성과 표현을 분리한 것 입니다. 생성자에 들어갈 매개 변수를 받고 모든 매개 변수를 받은 뒤에 통합해서 한 번에 사용을 합니다. 

 

빌더패턴을 사용하지 않는 경우를 먼저 살펴보겠습니다

public class PersonInfo {
   private String name;
   private int age;
   private String addr;

   //생성자
   public PersonInfo(String name, int age, String addr){
       this.name = name;
       this.age = age;
       this.addr = addr;
   }
}

생성자를 보면 이름, 나이, 주소 매개변수를 받도록 하고 있습니다. 하지만 어떤 경우 이름과 나이만 데이터가 있을 수 도 있습니다. 

public PersonInfo(String name, int age){
       this.name = name;
       this.age = age;
       this.addr = null;
   }

그런 경우 이렇게 생성자를 따로 새롭게 만들어 주어야 합니다. 이렇게 되면 어떤 매개변수를 받느냐에 따라 생성자를 새롭게 만들어 주어야하는 번거로운 일이 생깁니다. 또, 생성자가 받는 매개변수의 순서가 존재하기 때문에 데이터를 입력하는 순서를 확인한 후 입력해야 합니다.

 

빌더패턴을 사용하는 경우를 살펴보겠습니다. 

public class PersonInfo {
   private String name;
   private int age;
   private String addr;

   public PersonInfoBuilder setName(String name){
        this.name = name;
        return this;
    }

    public PersonInfoBuilder setAge(int age){
        this.age = age;
        return this;
    }

    public PersonInfoBuilder setAddr(String addr){
        this.addr = addr;
        return this;
    }

    public PersonInfo build(){
        return new PersonInfo(name, age, addr);
    }
}

다음과 같이 클래스에 빌더패턴을 적용할 수 있습니다.

PersonInfoBuilder personInfoBuilder = new PersonInfoBuilder();
PersonInfo personInfo = personInfoBuilder
        .setName("홍길동")
        .setAddr("서울")
        .setAge(20)
        .build();

이렇게 빌드패턴을 사용하면 데이터의 입력 순서에 상관없이 객체 생성을 할 수 있습니다. 불필요하게 여러 개의 생성자를 만들지 않아도 됩니다. 빌드패턴을 사용할 경우 명시적 선언으로 이해하기가 더 쉬워집니다.

반응형

'그 외 > Java' 카테고리의 다른 글

Lombok , JUnit , log4j / slf4j  (0) 2020.09.19
배열(Array)과 ArrayList  (0) 2020.09.18
상속과 다형성  (0) 2020.09.13
자바의 접근제어자  (0) 2020.09.11
Git Bash 설치 및 github 주요 명령어 정리  (0) 2020.09.07