封装购物车
2015-10-31 22:04
169 查看
在SSH的商城项目中有个像淘宝一样的购物车,这个具体是怎么实现的,现在给大家解释解释。
首先:
封装一个购物车对象:
* Cart:购物车对象:
* CartItem的集合:(选择Map集合,移除购物车时候比较方便.)
* total:总计:
*
功能:
*
将购物项添加到购物车:
*
从购物车中移除购物项:
*
清空购物车:
下面是代码:这是封装好的购物项对象
还有一个封装好购物车对象
下面就可以了在Action中使用了。
在这里是想问一下大家,平时大家都有积累一些经典代码的习惯,积累的这些代码,时间一长就会变多,这时候大家是怎么管理这些代码的。请指教。
首先:
封装一个购物车对象:
* Cart:购物车对象:
* CartItem的集合:(选择Map集合,移除购物车时候比较方便.)
* total:总计:
*
功能:
*
将购物项添加到购物车:
*
从购物车中移除购物项:
*
清空购物车:
下面是代码:这是封装好的购物项对象
<span style="font-family:KaiTi_GB2312;font-size:18px;">import cn.itcast.shop.product.vo.Product; /** * 购物项对象 * */ public class CartItem { private Product product; // 购物项中商品信息 private int count; // 购买某种商品数量 private double subtotal; // 购买某种商品小计 public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } // 小计自动计算的. public double getSubtotal() { return count * product.getShop_price(); } /*public void setSubtotal(double subtotal) { this.subtotal = subtotal; } */ } </span>
还有一个封装好购物车对象
<span style="font-family:KaiTi_GB2312;font-size:18px;">import java.io.Serializable; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; /** * 购物车对象 * * @author 传智.郭嘉 * */ public class Cart implements Serializable{ // 购物车属性 // 购物项集合:Map的key就是商品pid,value:购物项 private Map<Integer, CartItem> map = new LinkedHashMap<Integer, CartItem>(); // Cart对象中有一个叫cartItems属性. public Collection<CartItem> getCartItems(){ return map.values(); } // 购物总计: private double total; public double getTotal() { return total; } // 购物车的功能: // 1.将购物项添加到购物车 public void addCart(CartItem cartItem) { // 判断购物车中是否已经存在该购物项: /* * * 如果存在: * * 数量增加 * * 总计 = 总计 + 购物项小计 * * 如果不存在: * * 向map中添加购物项 * * 总计 = 总计 + 购物项小计 */ // 获得商品id. Integer pid = cartItem.getProduct().getPid(); // 判断购物车中是否已经存在该购物项: if(map.containsKey(pid)){ // 存在 CartItem _cartItem = map.get(pid);// 获得购物车中原来的购物项 _cartItem.setCount(_cartItem.getCount()+cartItem.getCount()); }else{ // 不存在 map.put(pid, cartItem); } // 设置总计的值 total += cartItem.getSubtotal(); } // 2.从购物车移除购物项 public void removeCart(Integer pid) { // 将购物项移除购物车: CartItem cartItem = map.remove(pid); // 总计 = 总计 -移除的购物项小计: total -= cartItem.getSubtotal(); } // 3.清空购物车 public void clearCart() { // 将所有购物项清空 map.clear(); // 将总计设置为0 total = 0; } } </span>
下面就可以了在Action中使用了。
在这里是想问一下大家,平时大家都有积累一些经典代码的习惯,积累的这些代码,时间一长就会变多,这时候大家是怎么管理这些代码的。请指教。
相关文章推荐
- eclipse plugin 导出插件包
- ssoj2468设置
- ArcGIS for Server 10.3.X 新型紧凑型缓存的解读和应用
- BestCoder Round #61 (div.2)
- HDU5512(水题~)
- 数据挖掘算法之协同过滤算法
- BestCoder Round #61 1002 Game
- 【系统性能优化】(四)数据库连接池
- shell 脚 本 练 习 题(四)
- 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
- Subline快捷键
- wpf之datagrid 序号列
- hive数据倾斜的解决方案
- 基于fab自动化部署
- [leetcode] Bulls and Cows
- wpf之IValueConverter接口
- java web开发中,如何查看JSP和Servlet版本
- 【系统性能优化】(三)数据库访问优化
- 单例模式
- Node.js面试题