购物车功能通过Product、CartItem和ShoppingCart类实现,支持添加、修改、删除商品及价格计算。

实现在线购物车功能是电商类Java应用中的核心模块之一。一个完整的购物车系统需要支持商品添加、数量修改、删除、价格计算和订单生成等操作。下面从设计思路到代码实现,详细介绍如何在Java中开发一个基础但实用的购物车功能。
购物车本质上是一个容器,用于临时保存用户选中的商品信息。我们需要定义两个核心类:商品(Product)和购物车项(CartItem),以及购物车本身(ShoppingCart)。
商品类(Product):
包含商品的基本信息,如ID、名称、单价等。
立即学习“Java免费学习笔记(深入)”;
public class Product {
private String id;
private String name;
private double price;
<pre class='brush:java;toolbar:false;'>public Product(String id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
// getter方法
public String getId() { return id; }
public String getName() { return name; }
public double getPrice() { return price; }}
购物车项类(CartItem):
表示购物车中某一商品及其数量。
public class CartItem {
private Product product;
private int quantity;
<pre class='brush:java;toolbar:false;'>public CartItem(Product product, int quantity) {
this.product = product;
this.quantity = quantity;
}
public Product getProduct() { return product; }
public int getQuantity() { return quantity; }
public void setQuantity(int quantity) { this.quantity = quantity; }
public double getTotalPrice() {
return product.getPrice() * quantity;
}}
购物车类(ShoppingCart):
管理多个购物车项,提供增删改查接口。
import java.util.*;
<p>public class ShoppingCart {
private Map<String, CartItem> items; // 使用Map便于通过商品ID查找</p><pre class='brush:java;toolbar:false;'>public ShoppingCart() {
items = new HashMap<>();
}
public void addItem(Product product, int quantity) {
if (quantity <= 0) {
throw new IllegalArgumentException("数量必须大于0");
}
String productId = product.getId();
if (items.containsKey(productId)) {
CartItem existingItem = items.get(productId);
existingItem.setQuantity(existingItem.getQuantity() + quantity);
} else {
items.put(productId, new CartItem(product, quantity));
}
}
public void updateQuantity(String productId, int quantity) {
if (!items.containsKey(productId)) {
throw new IllegalArgumentException("商品不存在于购物车中");
}
if (quantity <= 0) {
items.remove(productId);
} else {
items.get(productId).setQuantity(quantity);
}
}
public void removeItem(String productId) {
items.remove(productId);
}
public Collection<CartItem> getAllItems() {
return items.values();
}
public double getTotalAmount() {
return items.values().stream()
.mapToDouble(CartItem::getTotalPrice)
.sum();
}
public int getTotalItemsCount() {
return items.values().stream()
.mapToInt(CartItem::getQuantity)
.sum();
}
public boolean isEmpty() {
return items.isEmpty();
}}
使用上面定义的类,可以轻松实现常见的购物车操作。
public class ShoppingCartDemo {
public static void main(String[] args) {
// 创建商品
Product p1 = new Product("P001", "iPhone 15", 5999.0);
Product p2 = new Product("P002", "AirPods", 1299.0);
<pre class='brush:java;toolbar:false;'> // 创建购物车
ShoppingCart cart = new ShoppingCart();
// 添加商品
cart.addItem(p1, 1);
cart.addItem(p2, 2);
// 查看购物车内容
for (CartItem item : cart.getAllItems()) {
System.out.println(item.getProduct().getName() +
" x " + item.getQuantity() +
" = ¥" + item.getTotalPrice());
}
System.out.println("总金额: ¥" + cart.getTotalAmount());
System.out.println("商品总数: " + cart.getTotalItemsCount());
// 修改数量
cart.updateQuantity("P001", 2);
System.out.println("修改后总金额: ¥" + cart.getTotalAmount());
}}
在真实项目中,购物车还需要结合会话管理、数据库持久化和并发控制等机制。
在Spring MVC或Spring Boot项目中,可将ShoppingCart作为Session Scoped Bean管理。
@SessionScope
@Component
public class ShoppingCart {
// 原有逻辑不变
}
控制器中直接注入即可:
@RestController
public class CartController {
<pre class='brush:java;toolbar:false;'>@Autowired
private ShoppingCart cart;
@PostMapping("/cart/add")
public String addToCart(@RequestParam String productId,
@RequestParam int quantity) {
Product product = productService.findById(productId);
cart.addItem(product, quantity);
return "已添加";
}}
基本上就这些。一个简洁高效的Java购物车核心功能已经具备,后续可根据业务需求不断扩展。关键是模型清晰、接口明确、易于维护。
以上就是在Java中如何实现在线购物车功能_购物车功能开发指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号