购物车界面与功能实现分析图:
购物车对象:
package cn.itsource._01_buycart.domain;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 购物车对象
* */
public class ShoppingCart {
//表示购物车对象中的所有商品
private List<CartItem> items = new ArrayList<>();
public List<CartItem> getItems() {
return items;
}
public void setItems(List<CartItem> items) {
this.items = items;
}
/**
* 计算购物车中商品总价
* */
public Double getTotalPrice(){
Double totalPrice = 0D;
for (CartItem item : items) {
totalPrice += item.getPrice()*item.getNum();
}
return totalPrice;
}
/**
* 设计一个向购物车中添加商品的方法
* */
public void save(CartItem newItem){
/**
* 遍历所有的商品,如果商品相同,就将数量进行相加
* 如果全部不同,则需要把商品单独添加到购物车
* */
for (CartItem item : items) {
//比较id
if(newItem.getId().equals(item.getId())){
//修改item的数量 .item是购物车原有的数据
item.setNum(item.getNum() +newItem.getNum());
return; //不终止代码执行,则会执行后面的代码。
}
}
//如果全部不同,则需要把商品单独添加到购物车
items.add(newItem);
}
/**
* 从购物车中删除一个商品
* */
public void delete(String id){
/**
* 在使用遍历时,如果对遍历的这个集合进行修改或者删除的话。容易出现线程并发安全问题