效果

  1. 出海打鱼~~~~
  2. 25 分钟
  3. 切成6
  4. 装箱
  5. [海鲜披萨 杭州出品]制作完成
  6. 准备食材
  7. 25 分钟
  8. 切片,铺上芝士
  9. 装箱
  10. [芝士披萨 杭州出品]制作完成
  11. 做不出来,只能用普通披萨代替
  12. 准备食材
  13. 25 分钟
  14. 切成6
  15. 装箱
  16. [普通披萨 杭州出品]制作完成
  17. 出海打鱼~~~~
  18. 25 分钟
  19. 切成6
  20. 装箱
  21. [海鲜披萨 福建出品]制作完成
  22. 做不出来,只能用普通披萨代替
  23. 准备食材
  24. 25 分钟
  25. 切成6
  26. 装箱
  27. [普通披萨 福建出品]制作完成
  28. 准备食材
  29. 25 分钟
  30. 切成6
  31. 火箭打包----发射!
  32. [火箭披萨 福建出品]制作完成

介绍

主要是增加了加盟这个选项,
将工厂变为抽象类,
每个地方都建个分店。

完整代码

  1. package factoryMode;
  2. import java.util.ArrayList;
  3. class Pizza
  4. {
  5. public String name;
  6. public String dough;
  7. public String sauce;
  8. public Pizza() {
  9. // TODO Auto-generated constructor stub
  10. name = "普通披萨";
  11. }
  12. void prepare() {
  13. System.out.println("准备食材");
  14. }
  15. void bake() {
  16. System.out.println("烤 25 分钟");
  17. }
  18. void cut() {
  19. System.out.println("切成6片");
  20. }
  21. void box() {
  22. System.out.println("装箱");
  23. System.out.println("[" + name + "]" +"制作完成");
  24. }
  25. }
  26. abstract class PizzaStore{
  27. String StoreName;
  28. public Pizza OrderPizza(String type)
  29. {
  30. Pizza pizza = CreatePizza(type);
  31. pizza.prepare();
  32. pizza.bake();
  33. pizza.cut();
  34. pizza.box();
  35. return pizza;
  36. }
  37. public abstract Pizza CreatePizza(String type);
  38. }
  39. class HanzhouPizzaStore extends PizzaStore
  40. {
  41. public HanzhouPizzaStore() {
  42. // TODO Auto-generated constructor stub
  43. StoreName = "杭州分店";
  44. }
  45. @Override
  46. public Pizza CreatePizza(String type) {
  47. // TODO Auto-generated method stub
  48. Pizza pizza=null;
  49. switch(type)
  50. {
  51. case "海鲜披萨":
  52. pizza = new SeafoodPizza();
  53. break;
  54. case "芝士披萨":
  55. pizza=new CheesePizza();
  56. break;
  57. default :
  58. pizza = new Pizza();
  59. System.out.println("做不出来,只能用普通披萨代替");
  60. break;
  61. }
  62. pizza.name += " 杭州出品";
  63. return pizza;
  64. }
  65. }
  66. class FujianPizzaStore extends PizzaStore
  67. {
  68. public FujianPizzaStore() {
  69. // TODO Auto-generated constructor stub
  70. StoreName = "福建分店";
  71. }
  72. @Override
  73. public Pizza CreatePizza(String type) {
  74. // TODO Auto-generated method stub
  75. Pizza pizza=null;
  76. switch(type)
  77. {
  78. case "海鲜披萨":
  79. pizza = new SeafoodPizza();
  80. break;
  81. case "火箭披萨":
  82. pizza=new RocketPizza();
  83. break;
  84. default :
  85. pizza = new Pizza();
  86. System.out.println("做不出来,只能用普通披萨代替");
  87. break;
  88. }
  89. pizza.name += " 福建出品";
  90. return pizza;
  91. }
  92. }
  93. class SeafoodPizza extends Pizza{
  94. public SeafoodPizza() {
  95. name = "海鲜披萨";
  96. }
  97. void prepare() {
  98. System.out.println("出海打鱼~~~~");
  99. }
  100. }
  101. class CheesePizza extends Pizza{
  102. public CheesePizza() {
  103. name = "芝士披萨";
  104. }
  105. void cut() {
  106. System.out.println("切片,铺上芝士");
  107. }
  108. }
  109. class RocketPizza extends Pizza{
  110. public RocketPizza() {
  111. name = "火箭披萨";
  112. }
  113. void box() {
  114. System.out.println("火箭打包----发射!");
  115. System.out.println("[" + name + "]" +"制作完成");
  116. }
  117. }
  118. public class main {
  119. static public void main(String[] args) {
  120. HanzhouPizzaStore pizzaStore1 = new HanzhouPizzaStore();
  121. pizzaStore1.OrderPizza("海鲜披萨");
  122. pizzaStore1.OrderPizza("芝士披萨");
  123. pizzaStore1.OrderPizza("火箭披萨");
  124. FujianPizzaStore pizzaStore2 = new FujianPizzaStore();
  125. pizzaStore2.OrderPizza("海鲜披萨");
  126. pizzaStore2.OrderPizza("芝士披萨");
  127. pizzaStore2.OrderPizza("火箭披萨");
  128. }
  129. }