Builder Pattern
Builder Pattern
A Builder class builds the final object step by step. This builder is
independent of other objects.
Implementation
We have considered a business case of fast-food restaurant where a
typical meal could be a burger and a cold drink. Burger could be
either a Veg Burger or Chicken Burger and will be packed by a
wrapper. Cold drink could be either a coke or pepsi and will be
packed in a bottle.
Item.java
Packing.java
Step 2
Create concrete classes implementing the Packing interface.
Wrapper.java
@Override
public String pack() {
return "Wrapper";
}
}
Bottle.java
@Override
public String pack() {
return "Bottle";
}
}
Step 3
Create abstract classes implementing the item interface providing
default functionalities.
Burger.java
@Override
public Packing packing() {
return new Wrapper();
}
@Override
public abstract float price();
}
ColdDrink.java
public abstract class ColdDrink implements Item {
@Override
public Packing packing() {
return new Bottle();
}
@Override
public abstract float price();
}
Step 4
Create concrete classes extending Burger and ColdDrink classes
VegBurger.java
@Override
public float price() {
return 25.0f;
}
@Override
public String name() {
return "Veg Burger";
}
}
ChickenBurger.java
@Override
public float price() {
return 50.5f;
}
@Override
public String name() {
return "Chicken Burger";
}
}
Coke.java
@Override
public float price() {
return 30.0f;
}
@Override
public String name() {
return "Coke";
}
}
Pepsi.java
@Override
public float price() {
return 35.0f;
}
@Override
public String name() {
return "Pepsi";
}
}
Step 5
Create a Meal class having Item objects defined above.
Meal.java
import java.util.ArrayList;
import java.util.List;
Step 6
Create a MealBuilder class, the actual builder class responsible to
create Meal objects.
MealBuilder.java
Step 7
BuiderPatternDemo uses MealBuider to demonstrate builder pattern.
BuilderPatternDemo.java
Step 8
Verify the output.
Veg Meal
Item : Veg Burger, Packing : Wrapper, Price : 25.0
Item : Coke, Packing : Bottle, Price : 30.0
Total Cost: 55.0
Non-Veg Meal
Item : Chicken Burger, Packing : Wrapper, Price : 50.5
Item : Pepsi, Packing : Bottle, Price : 35.0
Total Cost: 85.5