设计模式之建造者模式(四)
来源:互联网 发布:淘宝联盟怎么使用教程 编辑:程序博客网 时间:2024/06/01 10:51
设计模式之建造者模式(四)
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
建造者的创建步骤:
1.创建一个表示食物条目和食物包装的接口
2.创建实现 Packing 接口的实体类
3.创建实现 Item 接口的抽象类,该类提供了默认的功能
4.创建扩展了 Burger 和 ColdDrink 的实体类
5.创建一个 Meal 类,带有上面定义的 Item 对象
6.创建一个 MealBuilder 类,实际的 builder 类负责创建 Meal 对象
7.使用 MealBuider 来演示建造者模式(Builder Pattern)
步骤一
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 {@Overridepublic Packing packing() { return new Bottle();}@Overridepublic abstract float price();}
步骤四
public class VegBurger extends Burger { @Override public float price() { return 25.0f; } @Override public String name() { return "Veg Burger"; }}
public class ChickenBurger extends Burger { @Override public float price() { return 50.5f; } @Override public String name() { return "Chicken Burger"; }}
public class Coke extends ColdDrink { @Override public float price() { return 30.0f; } @Override public String name() { return "Coke"; }}
public class Pepsi extends ColdDrink { @Override public float price() { return 35.0f; } @Override public String name() { return "Pepsi"; }}
步骤五
import java.util.ArrayList;import java.util.List;public class Meal { private List<Item> items = new ArrayList<Item>(); public void addItem(Item item){ items.add(item); } public float getCost(){ float cost = 0.0f; 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 { 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 BuilderPatternDemo { 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()); }}
阅读全文
0 0
- 设计模式之建造者模式(四)
- 设计模式之四 --- 建造(Builder)模式
- 设计模式之四 --- 建造(Builder)模式
- 设计模式之四 --- 建造(Builder)模式
- 设计模式之四 --- 建造(Builder)模式
- 设计模式之(四)--建造者模式(builder)
- 设计模式之(四)——建造者模式
- 设计模式学习(四)之建造者模式
- 设计模式(四)--建造者模式
- 设计模式笔记四:建造者模式
- 设计模式(四) 建造者模式
- 设计模式(四):建造者模式
- 设计模式(四)建造者模式
- 设计模式之建造者
- 设计模式 之 建造者
- 设计模式之建造者
- 设计模式之建造者模式
- 设计模式之建造者模式
- Leetcode——15. 3Sum
- nginx配置将http请求转发支持ssl双向认证https请求的正向代理
- python 12GUI
- 概率论中均值、方差、标准差介绍及C++/OpenCV/Eigen的三种实现
- JAVA图形验证码
- 设计模式之建造者模式(四)
- liunx 基础
- Flask中render_template的使用和模板的继承
- 1006. Sign In and Sign Out (25)
- 怎么查看电脑上面已经安装的JDK的位数
- 【算法】回文数的判断--栈的使用
- 计算html文本高度
- 百度鹰眼addPoint()的使用
- 【php知识整理】(1)基本语法 & 类型 & 变量 & 常量