基于spring的策略模式

发布于:2025-02-23 ⋅ 阅读:(22) ⋅ 点赞:(0)

集合spring框架的是策略模式,直接上代码

1、接口

public interface PaymentStrategy {
	
	//支付接口
    void pay(double amount);

}

2、实现类

2.1 实现类一
@Component("creditCard") //作为区分的标识
public class CreditCardPayment implements PaymentStrategy {//实现接口
    //重写的接口
    @Override
    public void pay(double amount) {
        System.out.println("Paid " + amount + " using Credit Card.");
    }

}
2.2 实现类一
@Component("creditCard") //作为区分的标识
public class PayPalPayment implements PaymentStrategy {//实现接口
    //重写的接口
    @Override
        public void pay(double amount) {
        System.out.println("Paid " + amount + " using PayPal.");
    }

}

3、工厂方法

//工厂方法
@Component
public class PaymentStrategyFactory {

	
    private final Map<String, PaymentStrategy> strategies;

	//自动字数管理映射
    @Autowired
    public PaymentStrategyFactory(Map<String, PaymentStrategy> strategies) {
        this.strategies = strategies;
    }

	//根据实现类的bean获取对应的实例
    public PaymentStrategy getStrategy(String strategyName) {
        return strategies.get(strategyName);
    }
}

4、应用层

    //  依赖注入
    private final PaymentStrategyFactory paymentStrategyFactory;

    @Autowired
    public LocalTest(PaymentStrategyFactory paymentStrategyFactory) {
        this.paymentStrategyFactory = paymentStrategyFactory;
    }
    @GetMapping("strategyTest")
    public String strategyTest(@RequestParam(value = "method") String method, 
                               @RequestParam(value = "amount") double amount) throws IOException {
        //获取对应的实例
        PaymentStrategy strategy = paymentStrategyFactory.getStrategy(method);
        if (strategy == null) {
            throw new RemoteException("Unknown payment method: "+method);
        }
        //运行
        strategy.pay(amount);
        return "Payment successful!";
    }

网站公告

今日签到

点亮在社区的每一天
去签到