Builder - Menu

Run Settings
LanguageJava
Language Version
Run Command
class Main { public static void main(String[] args) { MenuDirector menuDirector; Menu menu; menuDirector = new MenuDirector(new ItalianMenuBuilder()); menuDirector.buildMenu(); menu = menuDirector.getMenu(); System.out.println("menu is " + menu); menuDirector = new MenuDirector(new JapaneseMenuBuilder()); menuDirector.buildMenu(); menu = menuDirector.getMenu(); System.out.println("menu is " + menu); } }
public class MenuDirector { private MenuBuilder menuBuilder; public MenuDirector(MenuBuilder menuBuilder) { this.menuBuilder = menuBuilder; } public void buildMenu() { this.menuBuilder.createMenu(); this.menuBuilder.buildDrink(); this.menuBuilder.buildMainCourse(); this.menuBuilder.buildSide(); } public Menu getMenu() { return this.menuBuilder.getMenu(); } }
public abstract class MenuBuilder { private Menu menu; public void createMenu() { menu = new Menu(); } public abstract void buildDrink(); public abstract void buildMainCourse(); public abstract void buildSide(); public Menu getMenu() { return menu; } }
public class Menu { private String drink; private String mainCourse; private String side; public String getDrink() { return drink; } public void setDrink(String drink) { this.drink = drink; } public String getMainCourse() { return mainCourse; } public void setMainCourse(String mainCourse) { this.mainCourse = mainCourse; } public String getSide() { return side; } public void setSide(String side) { this.side = side; } public String toString() { return "drink:" + drink + ", main course:" + mainCourse + ", side:" + side; } }
public class JapaneseMenuBuilder extends MenuBuilder { @Override public void buildDrink() { getMenu().setDrink("sake"); } @Override public void buildMainCourse() { getMenu().setMainCourse("Sushi"); } @Override public void buildSide() { getMenu().setSide("mosi"); } }
public class ItalianMenuBuilder extends MenuBuilder { @Override public void buildDrink() { getMenu().setDrink("red Wine"); } @Override public void buildMainCourse() { getMenu().setMainCourse("Spaghetti"); } @Override public void buildSide() { getMenu().setSide("bread"); } }
Editor Settings
Theme
Key bindings
Full width
Lines