반응형

/** "Product" */
class Pizza {
private String dough = "";
private String sauce = "";
private String topping = "";
public void setDough(String dough) {
this.dough = dough;
}
public void setSauce(String sauce) {
this.sauce = sauce;
}
public void setTopping(String topping) {
this.topping = topping;
}
}
/** "Abstract Builder" */
abstract class PizzaBuilder {
protected Pizza pizza;
public Pizza getPizza() {
return pizza;
}
public void createNewPizzaProduct() {
pizza = new Pizza();
}
public abstract void buildDough();
public abstract void buildSauce();
public abstract void buildTopping();
}
/** "ConcreteBuilder" */
class HawaiianPizzaBuilder extends PizzaBuilder {
public void buildDough() {
pizza.setDough("cross");
}
public void buildSauce() {
pizza.setSauce("mild");
}
public void buildTopping() {
pizza.setTopping("ham+pineapple");
}
}
/** "ConcreteBuilder" */
class SpicyPizzaBuilder extends PizzaBuilder {
public void buildDough() {
pizza.setDough("pan baked");
}
public void buildSauce() {
pizza.setSauce("hot");
}
public void buildTopping() {
pizza.setTopping("pepperoni+salami");
}
}
/** "Director" */
class Cook {
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pizzaBuilder) {
this.pizzaBuilder = pizzaBuilder;
}
public Pizza getPizza() {
return pizzaBuilder.getPizza();
}
public void constructPizza() {
pizzaBuilder.createNewPizzaProduct();
pizzaBuilder.buildDough();
pizzaBuilder.buildSauce();
pizzaBuilder.buildTopping();
}
}
/** A given type of pizza being constructed. */
public class BuilderExample {
public static void main(String[] args) {
Cook cook = new Cook();
PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();
PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();
cook.setPizzaBuilder(hawaiianPizzaBuilder);
cook.constructPizza();
Pizza pizza = cook.getPizza();
}
}
위의 코드는 위키백과를 참조했다.
빌더 패턴을 Data Class에 적용하면
같은 테이블을 사용하는 Data들의
구분이 더 쉬워지고
값을 넣기도 수월해 질 것 같다.
반응형
'아카이브 > 일기' 카테고리의 다른 글
| 346일차 - The Story (가명) : 필요한 기능 (0) | 2021.12.16 |
|---|---|
| 345일차 - 직장인과 관련된 아이디어가 없을까? (0) | 2021.12.15 |
| 344일차 - 무슨 앱을 개발하지 (0) | 2021.12.14 |
| 343일차 - 빌더 패턴 (Builder Pattern) (2) (0) | 2021.12.13 |
| 341일차 - Android Paging3 (3) (0) | 2021.12.11 |
| 340일차 - Android Paging3 (2) (0) | 2021.12.10 |
| 339일차 - Android Paging3 (1) (0) | 2021.12.09 |
| 338일차 - 간단한 일기 (0) | 2021.12.08 |