建造者模式(java)



建造者模式

建造者模式:类似于搭积木,不变的对象单元对于不同的组合方法,得到不同的结果。

建造者模式:将一个个简单的对象组合成一个复杂的对象

详见菜鸟教程的例子:建造者模式
这里将代码贴出,以方便后日复习:

建造者图解

BuildPatternDemo->MealBuilder

包装类接口:
package builder_pattern;

public interface Packing {
	String pack();
}

餐饮项目接口:Item
package builder_pattern;

public interface Item {
	public String name();
	//	包装类
	public Packing packing();
	public float price();
}
包装接口的实体类:wrapper ,bottle
package builder_pattern;

public class Wrapper implements Packing {

	@Override
	public String pack() {
		return "Wrapper";
		
	}
}

public class Bottle implements Packing {

	@Override
	public String pack() {
		return "Bottle";
	}

}
接口 Item 的 抽象类Burger, ColdDrink
package builder_pattern;

public abstract class Burger implements Item {
	@Override
	public Packing packing() {
		return new Wrapper();
	}
	
	public abstract float price();
}

public abstract class ColdDrink implements Item {

	@Override
	public Packing packing() {
		//	包装方式
		return new Bottle();
	}

	@Override
	public abstract float price();
}
抽象类Burger,ColdDrink的实体类,例:ChickenBurger
package builder_pattern;

public class ChickenBurger extends Burger{

	@Override
	public String name() {
		return "Chicken_burger";
	}

	@Override
	public float price() {
		return 9.9f;
	}

}

  • item
    • Burger:抽象的汉堡

      • VegBurger
      • Non_VegBurger
    • ColdDrink:抽象的冷饮

      • Coke
      • Pepsi
每一套快餐的信息 Meal
package builder_pattern;

import java.util.ArrayList;
import java.util.List;

public class Meal {
	//	将选中的快餐放入一个List中方便管理:
	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.println("Item:" + item.name());
			System.out.println("Packing:" + item.packing().pack());
			System.out.println("Price:" + item.price() + " dollors\n");
		}
	}	
}

在这里插入图片描述

预备套餐:MealBuilder
package builder_pattern;

public class MealBuilder {
	public Meal prepareVegMeal() {
		Meal meal = new Meal();
		//	点一份素汉堡
		meal.addItem(new VegBurger());
		//  点一份可口可乐
		meal.addItem(new Coke());
		//  生成一份素套餐
		return meal;
	}
	public Meal prepareChickenMeal() {
		Meal meal = new Meal();
		meal.addItem(new ChickenBurger());
		meal.addItem(new Pepsi());
		return meal;
		
	}
}

开始点餐
  • prepareVegBurger() MealBuilder.prepareVegMeal
  • prepareChickenBurger()
买单

Veg Meal:


Item:veg_burger
Packing:Wrapper
Price:6.6 dollors

Item:Coke
Packing:Bottle
Price:0.5 dollors

total cost:7.1
=============================

Non-Veg Meal:


Item:Chicken_burger
Packing:Wrapper
Price:9.9 dollors

Item:Pepsi
Packing:Bottle
Price:0.5 dollors

total cost:10.4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值