시그마 삽질==six 시그마

빌더 패턴(Builder pattern) 본문

프로그래밍/디자인패턴

빌더 패턴(Builder pattern)

Ethan Matthew Hunt 2020. 4. 23. 21:45
@Data
public class Person {

	private String name;
	private int age;
	private int height;

	public Person(String name, int age, int height) {
		this.name = name;
		this.age = age;
		this.height = height;

	}
}

위 클래스가 있을때 

 

Person person = new Person("정우성",36,180); 

 

인자가 많아지면  의미하는 바가 무엇인지 모를 수 있다.

키를 나이칸과  잘못 넣을 확율도 있다.

 

 

이럴때 빌더 패턴을 사용하면 유용하다.

public class Person {

	private String name;
	private int age;
	private int height;

	public Person(Builder builder) {
		this.name = builder.name;
		this.age = builder.age;
		this.height = builder.height;

	}

	public static class Builder{
		private String name;
		private int age;
		private int height;

		public Builder(String name) {
			this.name = name;
		}

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

		public Builder height(int height){
			this.height=height;
			return this;
		}
		public Person build(){
			return new Person(this);
		}
	}
}

 

	Person person = new Person.Builder("정우성").age(30).height(180).build();

각 인자의 의미를 알기 쉽고

setter메소드가 없어서 불변객체 만들수 있다

점층적 생성자 패턴(텔레스코프 패턴)->자바빈 패턴(setter)->빌더패턴

Comments