Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- java 내림
- 프로그래머스 도둑질 java
- 프로그래머스 숫자의 표현 java
- Math.ceil()
- java 반올림
- 프로그래머스 연속된 수의 합 java
- 백준 16935
- 백준 18290
- 네트워크
- 0으로 채우기
- 백준 4375
- mysql
- java 올림
- 백준 16927
- Codility
- time complexity
- 백준 11723
- Algorithm
- java
- Math.floor()
- 백준 17425
- 자바
- sort
- 프로그래머스 네트워크 java
- 알고리즘
- 프로그래머스 옹알이 java
- 백준 14391
- 코딩테스트
- 백준 15661
- Arrays
Archives
- Today
- Total
취미처럼
[DP] 빌더 패턴 본문
빌더 패턴(builder pattern)
빌더 패턴이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다 (생성자 오버로딩)
/** "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();
}
}
'Design Pattern' 카테고리의 다른 글
[DP] 어댑터 패턴 (0) | 2021.03.19 |
---|---|
[DP] 데코레이터 패턴 (0) | 2021.03.19 |
[DP] 프록시 패턴 (0) | 2021.03.19 |
[DP] 옵저버 패턴 (0) | 2021.03.19 |
[DP] 전략 패턴 (0) | 2021.03.19 |
Comments