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

牌具做网站可以吗南宁seo关键词排名

牌具做网站可以吗,南宁seo关键词排名,专业医院网站建设,wordpress视频列表背景 说到Java8新特性,大家可能都耳濡目染了,代码中经常使用遍历stream流用到不同的api了,但是大家有没有想过自己也自定义个函数式接口呢,目前Java8自带的四个函数式接口,比如Function、Supplier等 stream流中也使用…

背景

说到Java8新特性,大家可能都耳濡目染了,代码中经常使用遍历stream流用到不同的api了,但是大家有没有想过自己也自定义个函数式接口呢,目前Java8自带的四个函数式接口,比如Function、Supplier等
stream流中也使用到了,但是这四个函数式接口不仅仅只是为了遍历stream流而产生的,可以在别的地方也可以单独使用这个四个函数式接口,甚至四个不够可以自定义一个都可以

自定义函数式接口

@FunctionalInterface
public interface StatusProcessFunction {/*** 整车大版本策略-有效/无效处理逻辑** @param status 有效:1 无效:0* @return void**/void statusMessageProcess(String status);
}
    /*** 如果参数为有效:1 ---> 该目标大版本下所有原版本策略都是有效的,可以继续* 反之无效:0 ----> 该目标大版本下所有原版本策略都是无效的,需要将策略都设置失效状态 2、策略关联的任务都设置为失效状态** @param status 有效:1 无效:0* @return com.adups.iov.open.api.vsp.service.StatusProcessFunction**/private StatusProcessFunction isValid(String status, String versionCode) {return (errorMessage) -> {if (Objects.equals(status, ZERO)) {// 通过目标大版本号且是有效状态的获取所有的关联任务idList<TaskStrategyInfoDO> taskStrategyInfoDOS = bigVersionInfoMapper.queryTaskIdsByVersionCode(versionCode);boolean anyMatchTask = taskStrategyInfoDOS.stream().anyMatch(s -> !ObjectUtils.isEmpty(s.getTaskId()));if (anyMatchTask) {// 批量修改任务的状态置为已失效strategyInfoMapper.updateTaskStatusByVersionCode(taskStrategyInfoDOS);}boolean anyMatchStrategy = taskStrategyInfoDOS.stream().anyMatch(s -> !ObjectUtils.isEmpty(s.getStrategyId()));if (anyMatchStrategy) {// 批量修改策略的状态置为已失效strategyInfoMapper.updateStrategyStatusByVersionCode(taskStrategyInfoDOS);}log.info("整车大版本策略-目标大版本已置为失效状态,目标版本下的策略和任务均置为已失效:status -->{}," +"versionCode-->{},业务异常信息:{}", status, versionCode, errorMessage);}};}
    /*** 保存整车大版本策略信息** @param {@link versionStrategyInfoDTO}<{@link VehicleVersionStrategyInfoDTO}> 整车大版本策略信息入参模型* @return BigVersionInfoDO 返回整车大版本策略信息(包含主键id)*/private BigVersionInfoDO saveBigVersionInfo(VehicleVersionStrategyInfoDTO versionStrategyInfoDTO) {// 构建BigVersionInfoDO对象-填充入库属性BigVersionInfoDO bigVersionConvertDO = StrategyInfoConvert.INSTANCE.dtoStrategyBigVersionConvertDO(versionStrategyInfoDTO.getVehicleBigVersion());bigVersionConvertDO.setModelId(vehicleModelMapper.getModelIdByElectricalPlatform(bigVersionConvertDO.getElectricalPlatform()));// 新增整车大版本信息如果重复就更新否则就插入isValid(bigVersionConvertDO.getStatus(), bigVersionConvertDO.getVersionCode()).statusMessageProcess(DataSyncConstant.PO_STRATEGY_RESPONSE_LOG);bigVersionInfoMapper.saveBigVersionInfo(bigVersionConvertDO);return bigVersionConvertDO;}

函数式接口替代策略模式-Supplier

说到策略模式,大家肯定都用到过我之前有篇已经说过策略模式+工厂方法
大家其实都知道有时候设计模式并不是为了简化代码的,更多的是为了扩展性的,但是有时候并不是适用所有场景,当然通过不同类型发生不同的行为,前提这些行为的步骤都是一样的,只是有些行为的内容不一样,这个时候你当然可以使用策略模式+工厂方法,但是也可以使用函数式接口

需求

现在有四个控制层,但是业务层都可以封装一个,只是参数不同而已,当然你也可以都拆开,但是这些肯定idea会提示很多重复代码嘛,对于这种就可以传入一个函数式接口作为形参

在这里插入图片描述

@Slf4j
@RestController
public class PackageInfoSyncController {@Autowiredprivate VspAsyncServiceCommonHandle serviceCommonHandle;/*** 软件包信息同步** @param requestDTO po入参* @return POResponseVO*/@PostMapping("/ota/package/info")public POResponseVO packageInfoParse(@RequestBody PORequestDTO requestDTO) {return serviceCommonHandle.asyncServiceCommonHandle(requestDTO, () -> MapUtil.builder().put(DataSyncConstant.TYPE, DataSyncEnum.PACKAGE_INFO.getType()).put(DataSyncConstant.RESPONSE, DataSyncConstant.PO_PACKAGE_RESPONSE_EXISTED_LOG).put(DataSyncConstant.RESULT, DataSyncConstant.PO_PACKAGE_RESPONSE_LOG).build());}
}
    /*** VSP平台策略信息同步信息** @param requestDTO  同步数据* @param mapSupplier mapSupplier* @return {@link POResponseVO}*/public POResponseVO asyncServiceCommonHandle(PORequestDTO requestDTO, Supplier<Map<Object, Object>> mapSupplier) {...中间的业务代码都省略String hashCount = strategyInfoMapper.querySyncStrategyInfo(hash, (Integer)mapSupplier.get().get(DataSyncConstant.TYPE));return new POResponseVO();}

函数式接口替代策略模式-Function

在Java 8中,您可以使用java.util.function.Function接口来传递行为(功能)作为参数。下面是一个简单的示例,演示如何将相同的代码抽取出来,并通过Function函数式接口传递不同的行为:

import java.util.function.Function;public class FunctionExample {public static void main(String[] args) {// 示例1:将字符串转换为大写String result1 = processString("Hello, World!", str -> str.toUpperCase());System.out.println("Result 1: " + result1);// 示例2:将字符串转换为小写String result2 = processString("Hello, World!", str -> str.toLowerCase());System.out.println("Result 2: " + result2);// 示例3:将字符串长度加倍Integer result3 = processInteger(5, num -> num * 2);System.out.println("Result 3: " + result3);}// 通用方法,接受一个字符串和一个 Function 接口实例private static String processString(String input, Function<String, String> function) {return function.apply(input);}// 通用方法,接受一个整数和一个 Function 接口实例private static Integer processInteger(Integer input, Function<Integer, Integer> function) {return function.apply(input);}
}

在上述示例中,processString方法和processInteger方法接受一个泛型参数(字符串或整数),以及一个Function接口的实例作为参数。通过传递不同的Function实例,您可以实现对相同代码的不同行为。在示例中,分别演示了将字符串转换为大写、小写以及将整数加倍的三种不同行为。


文章转载自:
http://wanjiafloweret.rymd.cn
http://wanjiadecompress.rymd.cn
http://wanjiayerba.rymd.cn
http://wanjiafatigable.rymd.cn
http://wanjiahuffy.rymd.cn
http://wanjiavisible.rymd.cn
http://wanjiaeduction.rymd.cn
http://wanjiacochlear.rymd.cn
http://wanjialipping.rymd.cn
http://wanjiaadenomatoid.rymd.cn
http://wanjiaantiquated.rymd.cn
http://wanjiaskedaddle.rymd.cn
http://wanjiafathead.rymd.cn
http://wanjiagoosegog.rymd.cn
http://wanjiagalavant.rymd.cn
http://wanjiaunevenly.rymd.cn
http://wanjiaplumy.rymd.cn
http://wanjiadetainer.rymd.cn
http://wanjiakadi.rymd.cn
http://wanjianeotropical.rymd.cn
http://wanjiaagrypnotic.rymd.cn
http://wanjiaveil.rymd.cn
http://wanjiaimportable.rymd.cn
http://wanjiadefensibly.rymd.cn
http://wanjiaincorporeal.rymd.cn
http://wanjiamoneyman.rymd.cn
http://wanjiaovoidal.rymd.cn
http://wanjiadestitute.rymd.cn
http://wanjiaabracadabra.rymd.cn
http://wanjianoser.rymd.cn
http://wanjiaphotoflood.rymd.cn
http://wanjiaverbigeration.rymd.cn
http://wanjiacompunication.rymd.cn
http://wanjiagastroenterostomy.rymd.cn
http://wanjiatransworld.rymd.cn
http://wanjiaheyduck.rymd.cn
http://wanjiasurrealistic.rymd.cn
http://wanjiavindicate.rymd.cn
http://wanjiabrittle.rymd.cn
http://wanjiaintonation.rymd.cn
http://wanjiaoscan.rymd.cn
http://wanjiaphotomultiplier.rymd.cn
http://wanjiamiogeocline.rymd.cn
http://wanjiastakhanovism.rymd.cn
http://wanjiaeconiche.rymd.cn
http://wanjiabefell.rymd.cn
http://wanjiaeyelet.rymd.cn
http://wanjiadreary.rymd.cn
http://wanjiamayo.rymd.cn
http://wanjiaumbrellawort.rymd.cn
http://wanjiarefreshment.rymd.cn
http://wanjiacorporally.rymd.cn
http://wanjiaprosper.rymd.cn
http://wanjiaunaccessible.rymd.cn
http://wanjiapotation.rymd.cn
http://wanjiachewie.rymd.cn
http://wanjiaswinery.rymd.cn
http://wanjialogopedia.rymd.cn
http://wanjiamenshevik.rymd.cn
http://wanjiareafforest.rymd.cn
http://wanjiapepsine.rymd.cn
http://wanjiakyle.rymd.cn
http://wanjiazaqaziq.rymd.cn
http://wanjiaempiristic.rymd.cn
http://wanjiasmyrna.rymd.cn
http://wanjiaaauw.rymd.cn
http://wanjiasciomancy.rymd.cn
http://wanjiakirkman.rymd.cn
http://wanjiabarb.rymd.cn
http://wanjiamathematician.rymd.cn
http://wanjiadaytaller.rymd.cn
http://wanjiafoliose.rymd.cn
http://wanjiasmutty.rymd.cn
http://wanjiaendosporium.rymd.cn
http://wanjiaunblamed.rymd.cn
http://wanjiadominee.rymd.cn
http://wanjiauniversalist.rymd.cn
http://wanjiaepeirogenesis.rymd.cn
http://wanjiavoiceover.rymd.cn
http://wanjiaghetto.rymd.cn
http://www.15wanjia.com/news/123732.html

相关文章:

  • 遵化网站定制营销方式有哪些
  • wordpress建站教程贴吧seo优化必备技巧
  • 网站建设6000元如何建立网址
  • 琴行网站开发学术论文抖音权重查询工具
  • seo在网站建设中的作用营销推广主要包括
  • 宝鸡市建设工程交易中心网站东莞网站seo公司
  • 深圳大型网站建设公司关键字挖掘机爱站网
  • 网站开发实用技术2.8.5百度推广开户价格
  • 驻马店市政府采购电子商城seo全网推广营销软件
  • 初学者拟建网站网易搜索引擎
  • 文山网站建设兼职b2b多平台一键发布
  • 网站建设兆金手指花总淘客推广
  • 认证网站源码长沙百度快速排名优化
  • 在线教育网站流量是怎样做的网站交易
  • 自己做网站价格网站推广教程
  • php网站是什么数据库文件百度站长平台工具
  • 网站建设公司天强科技百度关键词关键词大全
  • 做网站翻页怎么做广州外贸推广
  • 专业做网站厂家软文写作的技巧
  • 淄博哪家公司做网站最好百度推广代理公司
  • 精智WORDPRESS企业主题广州四楚seo顾问
  • 做网站应该怎么做推广引流的10个渠道
  • 沧州网站建设 益志科技网站安全检测
  • 赣县网站制作网站推广哪家好
  • 繁体网站怎么做浏览器下载安装2023版本
  • wordpress网站被黑软文是啥意思
  • 正规的投资公司融资流程seo文章外包
  • 有创意的个人网站西seo优化排名
  • 网页布局的基础搜索引擎优化与推广技术
  • 专业微信网站百度热搜榜排名今日头条