1. Builder 패턴이란?
bulider pattern은 창조적 디자인 패턴(creational patter) 에 속합니다. 이것은 factory pattern 또는 abstract factory pattern과 매우 비슷합니다.
builder pattern은 선택적인 파라메터가 많을 경우 제공 상태를 일관성 있게 해주고, object를 생성시킬때 step-by-step으로 만들 수 있도록 제공해주며 최종에는 만들어진 object를 리턴한다
2. 예제
// Product 클래스 를 만들고 그안에 Builder 패턴을 사용하는 ProductBuilder 빌더를 만듭니다.
package com.designpattern.builder;
public class Product {
private String name;
private int price;
private boolean isSell;
private Product(ProductBuilder builder){
this.name = builder.name;
this.price = builder.price;
this.isSell = builder.isSell;
}
public void ToString(){
System.out.println("name : " + name);
System.out.println("price : " + String.valueOf(price));
System.out.println("isSell : " + String.valueOf(isSell));
}
public static class ProductBuilder{
private String name;
private int price;
private boolean isSell;
public ProductBuilder setName(String name){
this.name = name;
return this;
}
public ProductBuilder setPrice(int price){
this.price = price;
return this;
}
public ProductBuilder setIsSellEnabled(boolean isSell){
this.isSell = isSell;
return this;
}
public Product build(){
return new Product(this);
}
}
}
//테스트
package com.designpattern.builder;
public class testBuilder {
public static void main(String[] args){
Product product = new Product.ProductBuilder()
.setIsSellEnabled(true)
.setName("모나미볼펜")
.setPrice(1000).build();
product.ToString();
}
}
//결과
name : 모나미볼펜
price : 1000
isSell : true
3. 자바에서 쓰이는 builder 패턴
java.lang.StringBuilder
은 대표적인 빌더 패턴이라고 볼수 있습니다.
시간이 되실때 소스를 보시면 많은 도움이 될것입니다.
'프로그래밍 > JAVA' 카테고리의 다른 글
Hashtable, HashMap, ConcurrentHashMap 비교 (0) | 2020.02.14 |
---|---|
Template 패턴 (0) | 2020.02.01 |
Adapter 패턴 (0) | 2020.02.01 |
Iterator 패턴 (0) | 2020.02.01 |
Factory 패턴 (0) | 2020.02.01 |
댓글