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...
}/*** 业务逻辑分派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>...
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...
2. STL map 和 multimap 的基本操作 STL map和multimap都是模板类,要使用其成员函数,必须先实例化。 2.1 实例化 std::map 和 std::multimap 要实例化将整数用作键、将字符串用作值的map或multimap,必须具体化模板类std::map或std::multimap。 实例化模板类map时,需要指定键和值的类型以及可选的谓词(它帮助...
利用map实现策略模式 1. 代码实现 手上有一个工作,要做一个数据库类型转换工具,比如MySQL转ClickHouse,那么这个工具大部分的工作就是在做映射关系的比对。 最初写的代码大概是这个样子的: 代码语言:go 复制 switch(mysqlType){caseMySQLInt:ifcolumn.IsUnsigned{col.Type=UInt32}col.Type=UInt32// 省略大部分...
解决方案①策略模式 ②Map+Function函数式接口 1.策略模式解决if-else 策略模式是把 if语句里面的逻辑抽出来写成一个类,如果要修改某个逻辑的话, 仅修改一个具体的实现类的逻辑即可,实现可维护性同时增加可扩展性,问题就是:会增加很多冗余的类 示例代码如下:...
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...
//定义函数式接口@FunctionalInterfaceinterfaceMapFunction<A, B, C, D, E, F, R>{ R apply(A a, B b, C c, D d, E e, F f); }/*** 定义的策略map*/privateMap<String, MapFunction<Integer, String, String, String, String, Boolean, IndicatorEntityDTO>>ruleMap;//策略map初始化@PostCon...