#Java 设计模式# 使用策略模式为购物车实现不同的支付方式

307 阅读1分钟

下面是代码示例

import java.util.*;

//策略接口
interface PayStrategy {
   public void pay(int amount);
}

//支付宝策略
class AliPayStrategy implements PayStrategy {

    @Override
    public void pay(int amount) {
        System.out.println("使用支付宝支付:" + amount + "元");
    }
}

//微信策略
class WeChatPayStrategy implements PayStrategy {

    @Override
    public void pay(int amount) {
        System.out.println("使用微信支付:" + amount + "元");
    }

}

//现金策略
class CashPayStrategy implements PayStrategy {

    @Override
    public void pay(int amount) {
        System.out.println("使用现金支付:" + amount + "元");
    }

}
class Item {
    private int price;
    private String name;
    public int getPrice(){
        return price;
    }
    public Item(){}
    public Item(String name, int price){
        this.name = name;
        this.price = price;
    }
}

//购物车
class ShoppingCart {
    private List<Item> items;

    public ShoppingCart() {
        this.items = new ArrayList<>();
    }

    public void addItem(Item item) {
        this.items.add(item);
    }

    public void removeItem(Item item) {
        this.items.remove(item);
    }

    public int calculateTotal() {
        int sum = 0;
        for (Item item : items) {
            sum += item.getPrice();
        }
        return sum;
    }

    public void pay(PayStrategy payStrategy) {
        int amount = calculateTotal();
        payStrategy.pay(amount);
    }
}

//测试类
public class Main {
    public static void main(String[] args) {
        ShoppingCart cart = new ShoppingCart();
        Item item1 = new Item("衣服", 100);
        Item item2 = new Item("鞋子", 200);
        cart.addItem(item1);
        cart.addItem(item2);

        //使用支付宝支付
        cart.pay(new AliPayStrategy());

        //使用微信支付
        cart.pay(new WeChatPayStrategy());

        //使用现金支付
        cart.pay(new CashPayStrategy());
    }
}

从代码中可知,购物付款时策略,是在运行的过程中动态指定的。也就是用户在页面中选择的支付方式。