策略模式,模板模式,工厂模式三个模式的联合使用
// 策略模式:定义支付接口
public interface Payment {
void pay(double amount);
}
// 策略模式:具体支付策略实现(微信支付)
public class WechatPayment implements Payment {
@Override
public void pay(double amount) {
System.out.println("微信支付成功!支付金额为:" + amount);
}
}
// 策略模式:具体支付策略实现(支付宝支付)
public class AlipayPayment implements Payment {
@Override
public void pay(double amount) {
System.out.println("支付宝支付成功!支付金额为:" + amount);
}
}
// 模板模式:定义支付模板方法
public abstract class PaymentTemplate {
public final void processPayment(double amount) {
System.out.println("开始处理支付...");
doPay(amount);
System.out.println("支付处理完成!");
}
protected abstract void doPay(double amount);
}
// 工厂模式:创建支付工厂,管理支付策略实例
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class PaymentFactory {
private final Map<String, Payment> paymentMap = new ConcurrentHashMap<>();
public Payment getPayment(String paymentType) {
return paymentMap.get(paymentType);
}
public void registerPayment(String paymentType, Payment payment) {
paymentMap.put(paymentType, payment);
}
}
// 测试类:模拟支付流程
public class PaymentTest {
public static void main(String[] args) {
PaymentFactory paymentFactory = new PaymentFactory();
paymentFactory.registerPayment("wechat", new WechatPayment());
paymentFactory.registerPayment("alipay", new AlipayPayment());
Payment wechatPayment = paymentFactory.getPayment("wechat");
Payment alipayPayment = paymentFactory.getPayment("alipay");
wechatPayment.pay(100.5);
alipayPayment.pay(200.0);
}
}

浙公网安备 33010602011771号