策略模式,模板模式,工厂模式三个模式的联合使用

// 策略模式:定义支付接口
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);
}

}

posted @ 2025-08-20 21:26  ruo_feng  阅读(19)  评论(0)    收藏  举报
-->