grantTypeMap.put("购物券",resourceId->grantTypeSerive.shopping(resourceId)); grantTypeMap.put("qq会员",resourceId->grantTypeSerive.QQVip(resourceId)); } public String getResult(String resourceType){ //Controller根据 优惠券类型resourceType、编码resourceId 去查询 发放方式grantType Function<String,S...
java 策略模式map java策略类 策略模式:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。它也被成为政策模式,是一种行为型模式。 介绍 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if…...
}/*** 业务逻辑分派Map * Function为函数式接口,下面代码中 Function<String, String> 的含义是接收一个Stirng类型的变量,返回一个String类型的结果*/privateMap<String, Function<String, String>> checkResultDispatcher =newHashMap<>();/*** 初始化 业务逻辑分派Map 其中value 存放的是 lambda表达式*/@PostCo...
策略模式的核心是封装一组算法实现特别是相似的算法实现,所以我们可以通过 map 来进行 KV 的约束,key 是客户端传进来的对应策略,用具体的算法实现 fun() 作为 value,这样无论是算法的封装还是调度都从业务场景中解耦了。 使用map 来实现策略模式的缺点 当然,缺点就是如果需要扩展策略,就要到增加一个 Entry<K,V>...
java策略模式 在启动时放入map中 springmvc策略模式 内容协商原理 目录 内容协商原理 一、引言 二、正常请求 请求数据格式确定和返回值数据格式确定 三、内容协商 确定客户端接收数据格式 默认基于请求头确定请求数据格式 确定服务端返回数据格式 选择最佳匹配
利用map实现策略模式 1. 代码实现 手上有一个工作,要做一个数据库类型转换工具,比如MySQL转ClickHouse,那么这个工具大部分的工作就是在做映射关系的比对。 最初写的代码大概是这个样子的: 代码语言:go 复制 switch(mysqlType){caseMySQLInt:ifcolumn.IsUnsigned{col.Type=UInt32}col.Type=UInt32// 省略大部分...
解决方案①策略模式 ②Map+Function函数式接口 1.策略模式解决if-else 策略模式是把 if语句里面的逻辑抽出来写成一个类,如果要修改某个逻辑的话, 仅修改一个具体的实现类的逻辑即可,实现可维护性同时增加可扩展性,问题就是:会增加很多冗余的类 示例代码如下:...
本文介绍策略模式的具体应用以及Map+函数式接口如何 “更完美” 的解决 if-else的问题。 需求 最近写了一个服务:根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则 实现方式: 根据优惠券类型resourceType -> 确定查询哪个数据表 ...
4.Map+函数式接口 感觉就是把ifelse的条件值变成了map的key 将上述策略类作为方法 @ServicepublicclassActivityStrategyService{publicStringdealSpringActivity(){return"春季活动逻辑";}publicStringdealSummerActivity(){return"夏季活动逻辑";}publicStringdealAutumnActivity(){return"秋季活动逻辑";}publicStringdealWinte...
Map+函数式接口采用jdk 1.8的函数式编程的新特性,用来实现策略模式,更加简单,更加自由。 同样以旅行为例: publicclassStrategy{@AutowiredprivateTravelServicetravelService;//有返回值用Function接口,无返回值用Consumer接口privateMap<Integer,Consumer<String>>typeMap=newHashMap<>();@PostConstructpublicvoiddispatcherIni...