반응형
빌드패턴은 매개변수가 많은 생성자를 사용 할 때 유용하게 사용 할 수 있다.
public class Person {
private String name;
private String age;
private String address;
...
...
..
..
public Person(String name, String age, String address, ... ){
this.name = name;
this.age = age;
this.address = address;
....
}
}
위와 같이 매개변수가 많은 객체를 사용하려면
Person ps = new Person(arg1, arg2, arg3, ...)
이렇게 객체를 생성해야 하는데
변수가 많으면 몇번째가 어느 변수인지 파악하기가 쉽지 않다.
이것을 쉽게 파악하기 위한 것이 빌드패턴이고 빌드패턴을 사용하는 가장 합리적인 첫번째 이유인것 같다.
아래는 빌드 패턴을 적용한 예시이다.
public class Person {
private String name;
private String age;
private String address;
private Person(PersonBuilder builder){
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
}
public static PersonBuilder builder(){
return new PersonBuilder();
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
public static class PersonBuilder{
private String name;
private String age;
private String address;
private PersonBuilder () {}
public PersonBuilder setName(String name){
this.name = name;
return this;
}
public PersonBuilder setAge(String age){
this.age = age;
return this;
}
public PersonBuilder setAdrres(String address){
this.address = address;
return this;
}
public Person build(){
return new Person(this);
}
}
}
이렇게 빌드 패턴을 적용하고 나면
객체 생성 시에
Person ps = Person.builder().setName("홍길동").setAge("17").setAdrress("서울").build();
이렇게 내가 어느 변수를 사용하는지 쉽게 파악해서 생성 가능하다.
빌드패턴의 단점은 빌드패턴을 세팅하는 코드가 길다는 것인데
이건 lombok을 사용하여 @Builder어노테이션을 써주면 간단하게 해결 가능하다.
@Builder
public class Person {
private String name;
private String age;
private String address;
}
이렇게 하면 빌드패턴을 바로 사용 할 수 있다.
반응형
'Develop > Java' 카테고리의 다른 글
Java - mapper / json 변환 (0) | 2022.04.27 |
---|