Evgenii Legotckoi
Sept. 18, 2018, 3:20 p.m.

Example - "Builder" design pattern in Java

Example of "Builder" design pattern in Java


  1. /* "Product" */
  2. class Pizza {
  3. private String dough = "";
  4. private String sauce = "";
  5. private String topping = "";
  6.  
  7. public void setDough(String dough) {
  8. this.dough = dough;
  9. }
  10.  
  11. public void setSauce(String sauce) {
  12. this.sauce = sauce;
  13. }
  14.  
  15. public void setTopping(String topping) {
  16. this.topping = topping;
  17. }
  18. }
  19.  
  20. /* "Abstract Builder" */
  21. abstract class PizzaBuilder {
  22. protected Pizza pizza;
  23.  
  24. public Pizza getPizza() {
  25. return pizza;
  26. }
  27.  
  28. public void createNewPizzaProduct() {
  29. pizza = new Pizza();
  30. }
  31.  
  32. public abstract void buildDough();
  33. public abstract void buildSauce();
  34. public abstract void buildTopping();
  35. }
  36.  
  37. /* "ConcreteBuilder" */
  38. class HawaiianPizzaBuilder extends PizzaBuilder {
  39. public void buildDough() {
  40. pizza.setDough("cross");
  41. }
  42.  
  43. public void buildSauce() {
  44. pizza.setSauce("mild");
  45. }
  46.  
  47. public void buildTopping() {
  48. pizza.setTopping("ham+pineapple");
  49. }
  50. }
  51.  
  52. /* "ConcreteBuilder" */
  53. class SpicyPizzaBuilder extends PizzaBuilder {
  54. public void buildDough() {
  55. pizza.setDough("pan baked");
  56. }
  57.  
  58. public void buildSauce() {
  59. pizza.setSauce("hot");
  60. }
  61.  
  62. public void buildTopping() {
  63. pizza.setTopping("pepperoni+salami");
  64. }
  65. }
  66.  
  67. /* "Director" */
  68. class Waiter {
  69. private PizzaBuilder pizzaBuilder;
  70.  
  71. public void setPizzaBuilder(PizzaBuilder pb) {
  72. pizzaBuilder = pb;
  73. }
  74.  
  75. public Pizza getPizza() {
  76. return pizzaBuilder.getPizza();
  77. }
  78.  
  79. public void constructPizza() {
  80. pizzaBuilder.createNewPizzaProduct();
  81. pizzaBuilder.buildDough();
  82. pizzaBuilder.buildSauce();
  83. pizzaBuilder.buildTopping();
  84. }
  85. }
  86.  
  87. /* A customer ordering a pizza. */
  88. public class PizzaBuilderDemo {
  89. public static void main(String[] args) {
  90. Waiter waiter = new Waiter();
  91. PizzaBuilder hawaiianPizzabuilder = new HawaiianPizzaBuilder();
  92. PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();
  93.  
  94. waiter.setPizzaBuilder( hawaiianPizzabuilder );
  95. waiter.constructPizza();
  96.  
  97. Pizza pizza = waiter.getPizza();
  98. }
  99. }

Do you like it? Share on social networks!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
  • Last comments
  • Evgenii Legotckoi
    March 9, 2025, 9:02 p.m.
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    March 9, 2025, 4:14 p.m.
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
  • ИМ
    Nov. 22, 2024, 9:51 p.m.
    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
  • Evgenii Legotckoi
    Oct. 31, 2024, 11:37 p.m.
    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
  • A
    Oct. 19, 2024, 5:19 p.m.
    Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html