下面是代码示例
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());
}
}
从代码中可知,购物付款时策略,是在运行的过程中动态指定的。也就是用户在页面中选择的支付方式。