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

深圳网站建设及推广做集团网站的

深圳网站建设及推广,做集团网站的,做一个简单的网站,建筑人才网和建筑英才网背景 说到Java8新特性#xff0c;大家可能都耳濡目染了#xff0c;代码中经常使用遍历stream流用到不同的api了#xff0c;但是大家有没有想过自己也自定义个函数式接口呢#xff0c;目前Java8自带的四个函数式接口#xff0c;比如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)) {// 通过目标大版本号且是有效状态的获取所有的关联任务idListTaskStrategyInfoDO 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, SupplierMapObject, 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, FunctionString, String function) {return function.apply(input);}// 通用方法接受一个整数和一个 Function 接口实例private static Integer processInteger(Integer input, FunctionInteger, Integer function) {return function.apply(input);} } 在上述示例中processString方法和processInteger方法接受一个泛型参数字符串或整数以及一个Function接口的实例作为参数。通过传递不同的Function实例您可以实现对相同代码的不同行为。在示例中分别演示了将字符串转换为大写、小写以及将整数加倍的三种不同行为。
http://www.w-s-a.com/news/256895/

相关文章:

  • 设计网站官网入口佛山 品牌设计
  • 专用网站建设wordpress mega
  • 网站建设与优化推广方案内容网站整站下载带数据库后台的方法
  • 做网站PAAS系统外链是什么意思
  • 网页设计专业设计课程googleseo排名公司
  • 网站百度百科那些免费网站可以做国外贸易
  • 做视频的网站有哪些南京计算机培训机构哪个最好
  • ppt做视频 模板下载网站商业街网站建设方案
  • 佛山网站定制开发星光影视园网站建设案例
  • wordpress子站点商务网页设计与制作微课版答案
  • 山东省住房城乡和建设厅网站软件开发主要几个步骤
  • 可以接项目做的网站网站源码php
  • 杭州广众建设工程有限公司网站网页游戏人气排行榜
  • 上海网站开发建设最简单的网站代码
  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广
  • 做网站的硬件无锡招标网官方网站
  • 做推送好用的网站合肥网站推广培训
  • 网站开发团队简介贵阳双龙区建设局网站
  • 新乡做网站公司哪家好wordpress侧边栏文件
  • 小白建站怎么撤销网站备案
  • 哪个网站做调查问卷赚钱短视频制作神器
  • 上海企业响应式网站建设推荐汕头网络优化排名