Skip to content

Commit

Permalink
Builder
Browse files Browse the repository at this point in the history
  • Loading branch information
dhsim86 committed Jul 28, 2019
1 parent b6753b0 commit a29c428
Show file tree
Hide file tree
Showing 6 changed files with 182 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.dongho.df.domain.creational.builder.pizza;

public class HawaiianPizzaBuilder extends PizzaBuilder {

@Override
public void buildDough() {
pizza.setDough("cross");
}

@Override
public void buildSause() {
pizza.setSause("mild");
}

@Override
public void buildTopping() {
pizza.setTopping("ham + pineapple");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.dongho.df.domain.creational.builder.pizza;

public class Pizza {

private String dough = "";
private String sause = "";
private String topping = "";

public void setDough(String dough) {
this.dough = dough;
}

public void setSause(String sause) {
this.sause = sause;
}

public void setTopping(String topping) {
this.topping = topping;
}

public String getDough() {
return dough;
}

public String getSause() {
return sause;
}

public String getTopping() {
return topping;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.dongho.df.domain.creational.builder.pizza;

public abstract class PizzaBuilder {

protected Pizza pizza;

public PizzaBuilder() {
pizza = new Pizza();
}

public Pizza getPizza() {
return pizza;
}

public void buildDough() {

}

public void buildSause() {

}

public void buildTopping() {

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.dongho.df.domain.creational.builder.pizza;

public class PizzaDirector {

private PizzaBuilder pizzaBuilder;

public void setPizzaBuilder(PizzaBuilder pizzaBuilder) {
this.pizzaBuilder = pizzaBuilder;
}

public Pizza getPizza() {
return pizzaBuilder.getPizza();
}

public void constructPizza() {
pizzaBuilder.buildDough();
pizzaBuilder.buildSause();
pizzaBuilder.buildTopping();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.dongho.df.domain.creational.builder.pizza;

public class SpicyPizzaBuilder extends PizzaBuilder {

@Override
public void buildDough() {
pizza.setDough("pan baked");
}

@Override
public void buildSause() {
pizza.setSause("hot");
}

@Override
public void buildTopping() {
pizza.setTopping("pepperoni + salami");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.dongho.df.domain.creational.builder;

import com.dongho.df.domain.creational.builder.pizza.HawaiianPizzaBuilder;
import com.dongho.df.domain.creational.builder.pizza.Pizza;
import com.dongho.df.domain.creational.builder.pizza.PizzaDirector;
import com.dongho.df.domain.creational.builder.pizza.SpicyPizzaBuilder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import static org.assertj.core.api.Assertions.assertThat;

@RunWith(JUnit4.class)
public class BuilderTest {

@Test
public void hawaiianPizzaBuildTest() {
PizzaDirector pizzaDirector;

given: {
pizzaDirector = new PizzaDirector();
pizzaDirector.setPizzaBuilder(new HawaiianPizzaBuilder());
}

when: {
pizzaDirector.constructPizza();
}

then: {
Pizza pizza = pizzaDirector.getPizza();

assertThat(pizza.getDough()).isEqualTo("cross");
assertThat(pizza.getSause()).isEqualTo("mild");
assertThat(pizza.getTopping()).isEqualTo("ham + pineapple");
}

}

@Test
public void spicyPizzaBuildTest() {
PizzaDirector pizzaDirector;

given: {
pizzaDirector = new PizzaDirector();
pizzaDirector.setPizzaBuilder(new SpicyPizzaBuilder());
}

when: {
pizzaDirector.constructPizza();
}

then: {
Pizza pizza = pizzaDirector.getPizza();

assertThat(pizza.getDough()).isEqualTo("pan baked");
assertThat(pizza.getSause()).isEqualTo("hot");
assertThat(pizza.getTopping()).isEqualTo("pepperoni + salami");
}

}

}

0 comments on commit a29c428

Please sign in to comment.