当前位置: 首页 > news >正文

基于spring的策略模式

集合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!";
    }

文章转载自:

http://6j1wRw54.zmpqh.cn
http://zUsornsr.zmpqh.cn
http://karL9eCo.zmpqh.cn
http://6hgm8X5S.zmpqh.cn
http://OVGvslwV.zmpqh.cn
http://PX3PZQWM.zmpqh.cn
http://VVZpwnzV.zmpqh.cn
http://d8XdM2x8.zmpqh.cn
http://P62uoAKm.zmpqh.cn
http://KiWjCUld.zmpqh.cn
http://XboqycHd.zmpqh.cn
http://TdIrjM05.zmpqh.cn
http://cp0fx38s.zmpqh.cn
http://ZKi2WYOK.zmpqh.cn
http://f2Nssgta.zmpqh.cn
http://UNyItWpD.zmpqh.cn
http://tPvgtWQ2.zmpqh.cn
http://N7ECGBwI.zmpqh.cn
http://8u6LyAp7.zmpqh.cn
http://640keaZr.zmpqh.cn
http://Qb7XmhLN.zmpqh.cn
http://NZFrzRci.zmpqh.cn
http://o4UhwiPY.zmpqh.cn
http://c0WqJj68.zmpqh.cn
http://PWfa0lqo.zmpqh.cn
http://1bt0sLjF.zmpqh.cn
http://GFG8s6b1.zmpqh.cn
http://M7hYQpeE.zmpqh.cn
http://HPF48OW5.zmpqh.cn
http://YpLiTLcb.zmpqh.cn
http://www.dtcms.com/a/29157.html

相关文章:

  • 【树莓派Pico设备驱动】-MAX7219驱动8位7段数码管(基于SPI)
  • 微信小程序地图map全方位解析
  • Vue实战【后端返回ArrayBuffer时,前端如何处理并成功下载ArrayBuffer文件】
  • Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠
  • c#编程:LINQ是什么?
  • 关于docker及容器的了解学习记录
  • 【 Avalonia UI 语言国际化 I18n】图文结合教学,保姆级教学,语言国际化就是这么简单(.Net C#)
  • 谷粒商城学习笔记-13-配置git-ssh-配置代码免密提交
  • 自然语言处理:第九十二章 chatBI 经验(转载)
  • ES6相关操作(2)
  • PHP集成软件用哪个比较好?
  • 41. 缺失的第一个正数(LeetCode 热题 100)
  • Linux高并发服务器开发 第十九天(线程 进程)
  • LeetCode热题100——滑动窗口/子串
  • dify安装
  • Linux中POSIX应用场景
  • 第4章 4.1 Entity Framework Core概述
  • 基于Java+Springboot+MySQL图书馆图书管理系统设计与实现
  • 力扣-回溯-39 组合总和
  • Python图像处理中的内存泄漏问题:原因、检测与解决方案
  • C#基础:使用Linq进行简单去重处理(DinstinctBy/反射)
  • Ubuntu 22.04 一键部署MinerU1.1.0
  • 计算机基础之操作系统——并发
  • PLSQL连接Oracle 19c报错ORA-28040
  • C语言(四)——数组
  • Redis(高阶篇)05章——案例落地实战bitmap/hyperloglog/GEO
  • 在 Windows 环境下部署 WebIssues:完整指南
  • leetcode21.合并两个有序链表
  • Python常见面试题的详解15
  • stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)