Java实现(04)——建造者模式(Builder Pattern)
2016-12-06 09:22
363 查看
建造者模式一步一步地通过简单的对象创建复杂的对象。
本例介绍快餐店中的快餐,快餐有汉堡和饮料,汉堡分为蔬菜汉堡和肌肉汉堡,饮料分为百事和可口可乐。汉堡需要盒子来装,可乐需要瓶子。通过创建一个Meal类来表示点的快餐。
public interface Item {
public String name();
public Packing packing();
public float price();
}
输出:
本例介绍快餐店中的快餐,快餐有汉堡和饮料,汉堡分为蔬菜汉堡和肌肉汉堡,饮料分为百事和可口可乐。汉堡需要盒子来装,可乐需要瓶子。通过创建一个Meal类来表示点的快餐。
public interface Item {
public String name();
public Packing packing();
public float price();
}
public interface Packing { public String pack(); }
public class Wrapper implements Packing { @Override public String pack() { return "Wrapper"; } }
public class Bottle implements Packing { @Override public String pack() { return "Bottle"; } }
public abstract class Burger implements Item { @Override public Packing packing() { return new Wrapper(); } @Override public abstract float price(); }
public abstract class ColdDrink implements Item { @Override public Packing packing() { return new Bottle(); } @Override public abstract float price(); }
public class ChickenBurger extends Burger { @Override public String name() { return "Chicken Burger"; } @Override public float price() { return 50.5f; } }
public class VegBurger extends Burger { @Override public String name() { return "Veg Burger"; } @Override public float price() { return 25.0f; } }
public class Coke extends ColdDrink { @Override public String name() { return "Coke"; } @Override public float price() { return 30.0f; } }
public class Pepsi extends ColdDrink { @Override public String name() { return "Pepsi"; } @Override public float price() { return 35.0f; } }
public class Meal { private List<Item> items = new ArrayList<Item>(); public void addItem(Item item) { items.add(item); } public float getCost() { float cost = 0; for (Item item : items) { cost += item.price(); } return cost; } public void showItems() { for (Item item : items) { System.out.print("Item: " + item.name()); System.out.print(",Packing: " +item.packing().pack()); System.out.println(",Price: " + item.price()); } } }
public class MealBuilder { 4000 public Meal prepareVegMeal() { Meal meal = new Meal(); meal.addItem(new VegBurger()); meal.addItem(new Coke()); return meal; } public Meal prepareNonVegMeal() { Meal meal = new Meal(); meal.addItem(new ChickenBurger()); meal.addItem(new Pepsi()); return meal; } }
public class Demo { public static void main(String[] args) { MealBuilder mealBuilder = new MealBuilder(); Meal vegMeal = mealBuilder.prepareVegMeal(); System.out.println("Veg Meal"); vegMeal.showItems(); System.out.println("Total Cost: " + vegMeal.getCost()); Meal nonVegmeal = mealBuilder.prepareNonVegMeal(); System.out.println("\n\nNon-Veg Meal"); nonVegmeal.showItems(); System.out.println("Total Cost: " + nonVegmeal.getCost()); } }
输出:
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
相关文章推荐
- java实现建造者模式(Builder Pattern)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- Python实现设计模式--05.建造者模式(Builder Pattern)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- 设计模式之—建造者模式(Builder)-Java实现
- 建造者模式(Builder Pattern)的实现和示例demo
- Java Builder Pattern(建造者模式)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 建造者模式(Builder) - Java实现
- Java设计模式——建造者模式(Builder Pattern)
- java设计模式——建造者模式(Builder Pattern)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- Java设计模式——创建型模式——建造者模式(Builder Pattern)
- 建造者(BUilder)模式的Java实现[00原创]
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- Java设计模式之Builder Pattern
- (Builder)建造者模式的Java实现 推荐
- 设计模式----建造者模式(Builder Pattern)
- 建造者模式(builder pattern)