命令模式 电商 购物车 示例 java
时间: 2023-09-01 20:12:56 浏览: 47
命令模式是一种行为设计模式,它将请求封装成一个对象,从而使您可以使用不同的请求、队列或日志请求来参数化其他对象。在本例中,我们将使用命令模式来实现一个简单的电商购物车示例,以便演示其工作原理。
首先,我们需要定义一个命令接口,该接口包含执行和撤销方法:
```java
public interface Command {
void execute();
void undo();
}
```
然后,我们将实现该接口以表示添加和删除商品的命令:
```java
public class AddProductCommand implements Command {
private ShoppingCart cart;
private Product product;
public AddProductCommand(ShoppingCart cart, Product product) {
this.cart = cart;
this.product = product;
}
public void execute() {
cart.addProduct(product);
}
public void undo() {
cart.removeProduct(product);
}
}
public class RemoveProductCommand implements Command {
private ShoppingCart cart;
private Product product;
public RemoveProductCommand(ShoppingCart cart, Product product) {
this.cart = cart;
this.product = product;
}
public void execute() {
cart.removeProduct(product);
}
public void undo() {
cart.addProduct(product);
}
}
```
接下来,我们将实现一个购物车类,该类包含添加和删除商品的方法:
```java
public class ShoppingCart {
private List<Product> products = new ArrayList<>();
public void addProduct(Product product) {
products.add(product);
}
public void removeProduct(Product product) {
products.remove(product);
}
public void printProducts() {
for (Product product : products) {
System.out.println(product.getName());
}
}
}
```
最后,我们将编写一个客户端类来演示命令模式的工作原理:
```java
public class Client {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
Product product1 = new Product("Product 1");
Product product2 = new Product("Product 2");
Command addProduct1 = new AddProductCommand(cart, product1);
Command addProduct2 = new AddProductCommand(cart, product2);
Command removeProduct1 = new RemoveProductCommand(cart, product1);
addProduct1.execute();
addProduct2.execute();
removeProduct1.execute();
cart.printProducts();
}
}
```
在这个例子中,我们首先创建一个购物车对象,然后创建两个商品对象。接下来,我们创建三个命令对象:添加商品1、添加商品2和删除商品1。我们依次执行这些命令,然后打印购物车中剩余的商品。
通过使用命令模式,我们可以将请求封装成一个对象,并使用不同的请求来参数化其他对象。这种方法使我们能够更好地管理代码,使其更加模块化和可扩展。