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<String, MediaType> mediaTypeMap = new HashMap<>(); mediaTypeMap.put("lg", MediaType.parseMediaType("application/lg")); mediaTypeMap.put("xml", MediaType.parseMediaType("application/xml")); mediaTypeMap.put("json", MediaType.parseMediaType("application/json")); ParameterContentNegoti...
Map+函数式接口采用jdk 1.8的函数式编程的新特性,用来实现策略模式,更加简单,更加自由。 同样以旅行为例: publicclassStrategy { @AutowiredprivateTravelServicetravelService; //有返回值用Function接口,无返回值用Consumer接口privateMap<Integer, Consumer<String>>typeMap=newHashMap<>(); @PostConstructpublicvoiddisp...
利用map实现策略模式 1. 代码实现 手上有一个工作,要做一个数据库类型转换工具,比如MySQL转ClickHouse,那么这个工具大部分的工作就是在做映射关系的比对。 最初写的代码大概是这个样子的: 代码语言:go 复制 switch(mysqlType){caseMySQLInt:ifcolumn.IsUnsigned{col.Type=UInt32}col.Type=UInt32// 省略大部分...
使用map 来实现策略模式的优点 策略模式的核心是封装一组算法实现特别是相似的算法实现,所以我们可以通过 map 来进行 KV 的约束,key 是客户端传进来的对应策略,用具体的算法实现 fun() 作为 value,这样无论是算法的封装还是调度都从业务场景中解耦了。
解决方案①策略模式 ②Map+Function函数式接口 1.策略模式解决if-else 策略模式是把 if语句里面的逻辑抽出来写成一个类,如果要修改某个逻辑的话, 仅修改一个具体的实现类的逻辑即可,实现可维护性同时增加可扩展性,问题就是:会增加很多冗余的类 示例代码如下:...
4.Map+函数式接口 感觉就是把ifelse的条件值变成了map的key 将上述策略类作为方法 @ServicepublicclassActivityStrategyService{publicStringdealSpringActivity(){return"春季活动逻辑";}publicStringdealSummerActivity(){return"夏季活动逻辑";}publicStringdealAutumnActivity(){return"秋季活动逻辑";}publicStringdealWinte...
策略模式目的是取代if...else...的写法,但是策略模式一般需要定义一个接口+多个实现类,然后使用枚举类(实现享元模式)或者Map(实现享元模式)来维护type:实现类...