创建型模式之生成器/建造者BUILDER
来源:互联网 发布:mysql可视化建立外键 编辑:程序博客网 时间:2024/05/20 00:13
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
一、介绍
建造者模式用于对于复杂对象的建立。由于复杂对象过于繁杂,采用一步一步建立的方式。
以KFC为例,KFC店食品可以自由组合,顾客可以根据需求点各种食品。这就需要我们首先的列出各种食品的信息,通过接口Item继承实现各种食物,然后使用一个容器Meal来承载这些食品,并提供各种操作方法。对于某些套餐,可以提供MealBuilder预先制定好套餐内食品。
二、建立单个食品
接口Item
集中各种食品类型,各种食品继承此接口,实现多态。
package builder;public interface Item { public String name(); public Packing setPacking(); public float price();}
分类继承
不同食品属于不同类别,可在此处添加不同类别的特殊属性
package builder;public abstract class Burger implements Item { @Override public builder.Packing setPacking() { // TODO Auto-generated method stub return new Wrapper(); }}
具体食品
package builder;public class VegBurger extends Burger { @Override public String name() { // TODO Auto-generated method stub return "VegBurger"; } @Override public float price() { // TODO Auto-generated method stub return 10.0f; }}
三、食品操作
最终顾客点餐会产生一系列食品。需要用类添加,并提供一些接口。比如添加食品、删除食品、计算总价等
package builder;import java.util.*;public class Meal { private List<Item> itemList = new ArrayList<Item>(); public void addItem(Item item){ itemList.add(item); } public float getCost(){ float costTotal = 0.0f; for(Item i : itemList){ costTotal += i.price(); } return costTotal; }}
四、生成套餐
有些顾客直接点一个套餐。我们可以事先生成这个套餐方法。
package builder;public class MealBuilder { public Meal makeVegMeal(){ Meal vegMeal = new Meal(); vegMeal.addItem(new VegBurger()); vegMeal.addItem(new Water()); return vegMeal; } public Meal makeChiMeal(){ Meal chiMeal = new Meal(); chiMeal.addItem(new ChickenBurger()); chiMeal.addItem(new Coke()); return chiMeal; }}
五、调用
package builder;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub MealBuilder mealBuilder = new MealBuilder(); Meal vegMeal = mealBuilder.makeVegMeal(); float total = vegMeal.getCost(); System.out.println(total); }}
代码
0 0
- 创建型模式之生成器/建造者BUILDER
- 设计模式之建造者模式(生成器模式)(Builder) 创建型模式
- 创建型-生成器/建造者builder
- 创建型模式之建造者模式(生成器模式)
- 设计模式之建造者模式(生成器模式、Builder)摘录
- (创建型模式)BUILDER——建造者模式(生成器模式)
- 第六篇、创建型设计模式——建造者(Builder)模式/生成器模式
- 创建型模式之建造者模式(Builder)
- 创建型模式之建造者(Builder)模式
- 创建型模式之建造者模式(Builder)
- 设计模式(创建型)之建造者模式(Builder Pattern)
- (创建型模式)Builder 建造者模式
- 创建型模式-Builder ( 建造者模式 )
- 创建型模式 --- 建造者模式(Builder)
- 建造者模式 - Builder 生成器模式
- 生成器/建造者模式(Builder Pattern)
- builder(生成器/建造者模式)
- [设计模式-创建型]建造者(Builder)
- 完不成计划,是因为你不懂“精力管理”
- Struts2 中 关于s:url 标签 的使用问题
- android WebView跳转QQ客服
- top 命令详解
- 2017年Java就业前景分析
- 创建型模式之生成器/建造者BUILDER
- php 递归函数使用
- [Qt配置指南—2]Qt 5.4.2 Configure Options---Qt配置选项使用
- MSSQL 2008 R2 viewinfo(microsoft.sqlserver.management.sqlstudio.explorer)
- java集合笔记
- 垃圾回收算法
- 一个可扩展的下方是导航条,上方是Fragment的UI框架
- scala数据结构和算法-04-快速排序实现
- 程序设计二 歌手大奖赛积分