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

动画制作软件flash北京网站搜索引擎优化推广

动画制作软件flash,北京网站搜索引擎优化推广,鞍山网页制作,高端企业网站 程序1背景介绍 一个应用工程里面#xff0c;一遍会涉及到很多的模型转换#xff0c;如DTO模型转DO模型#xff0c;DO模型转DTO, 或者Request转DTO模型#xff0c;总的来说#xff0c;维护起来还是相对比较复杂。每涉及一个转换都需要重新写对应类的get或者set方法#xff0c…1背景介绍 一个应用工程里面一遍会涉及到很多的模型转换如DTO模型转DO模型DO模型转DTO, 或者Request转DTO模型总的来说维护起来还是相对比较复杂。每涉及一个转换都需要重新写对应类的get或者set方法并且这些方法散落在不同的模块里面非常不方便管理。 下面介绍 转换器设计模式来解决上面这个问题。 在这篇文章中会介绍 Converter Design Pattern。由于Java8 功能不仅提供了相应类型之间的通用双向转换方式而且还提供了转换相同类型对象集合的常用方法从而将样板代码减少到绝对最小值。 2Converter接口 /*** A converter converts a source object of type {code S} to a target of type {code T}.** pImplementations of this interface are thread-safe and can be shared.** pImplementations may additionally implement {link ConditionalConverter}.** author Keith Donald* since 3.0* param S the source type* param T the target type*/ public interface ConverterS, T {/*** Convert the source object of type {code S} to target type {code T}.* param source the source object to convert, which must be an instance of {code S} (never {code null})* return the converted object, which must be an instance of {code T} (potentially {code null})* throws IllegalArgumentException if the source cannot be converted to the desired target type*/T convert(S source);}该接口为函数式接口因此可以用lamda方式实现转换。这种简单方式本篇不再介绍。可以参考这篇文章https://wenku.baidu.com/view/d64211654731b90d6c85ec3a87c24028915f859c.html?wkts1693142368160bdQueryConverterjava本篇这样介绍设计模式相关内容。 3MyConverter接口 public interface MyConverterS, T extends ConverterS, T {/*** 将DTO对象转换为领域对象* param dtoData 原模型* return 目标模型*/T convert(S dtoData);/*** 转换领域模型列表* param dtoDatas 原模型列表* return 目标模型列表*/ListT convert(ListS dtoDatas); } 在使用上一般先基于开始接口定位自己业务接口这里满足了单数据或者列表数据。 4TemplateConverter 然后写自己模版类后面的具体模型转换器基于这个模版实现 public abstract class TemplateConverterS, T implements MyConverterS, T {/** 实体sourceClass */protected final ClassS sourceClass;/** targetClass */protected final ClassT targetClass;/** 构造方法约束泛型类型 */public TemplateConverter() {try {ParameterizedType parameterizedType ((ParameterizedType) getClass().getGenericSuperclass());sourceClass (ClassS) parameterizedType.getActualTypeArguments()[0];targetClass (ClassT) parameterizedType.getActualTypeArguments()[1];} catch (Exception e) {throw new RuntimeException(no definition);}}/*** 源模型 转 目标模型* param sourceModel 源模型* return 目标模*/public T convert(S sourceModel) {// 空请求默认返回空if (sourceModel null) {return null;}T domainModel;try {domainModel targetClass.newInstance();// 执行转换excuteConvert(sourceModel, domainModel);} catch (Exception e) {StringBuilder bf new StringBuilder(conversion error,source:);bf.append(sourceClass.getSimpleName()).append(,target:).append(targetClass.getSimpleName());throw new RuntimeException(convert RuntimeException);}return domainModel;}/*** 源模型(List)转换为目标模型(List)** param sourceModels 源模型列表* return 目标模型列表*/public ListT convert(ListS sourceModels) {// 空请求默认返回空if (CollectionUtils.isEmpty(sourceModels)) {return null;}ListT result new ArrayList();for (S dtoData : sourceModels) {T resData convert(dtoData);if (resData ! null) {result.add(resData);}}return result;}/*** 执行具体的模型转换* param sourceModel 源模型* param targetModel 目标模型*/public abstract void excuteConvert(S sourceModel, T targetModel);}5 具体模型转换-StudentModeConverter 具体到模型转换器这里还可以有很多个这里以StudentModeConverter为例只涉及到DTO模型转 DO模型 public class StudentModeConverter extendsTemplateConverterStudentModeDTO, StudentModeDO {Overridepublic void doConvert(StudentModeDTO sourceModel,StudentModeDO targetModel) {targetModel.setName(sourceModel.getName());// 下面省略很多get/settargetModel.setAge(sourceModel.getAge());} }后面还可以写具体的转换器。基于之前模版。 6 通用转换服务-CommonConversionServiceImpl public class CommonConversionServiceImpl extends GenericConversionService{/** constructor */public CommonConversionServiceImpl() {// 添加转换器addDefaultConverters(this);}/*** 添加转换器* param converterRegistry*/public void addDefaultConverters(ConverterRegistry converterRegistry) {// 添加通用集合转换器converterRegistry.addConverter(new StudentModeConverter1());converterRegistry.addConverter(new StudentModeConverter2());// ....converterRegistry.addConverter(new StudentModeConverter3());}7 封装工具-CommonConvertUtil public class CommonConvertUtil {/*** 通用转换服务*/private static CommonConversionService conversionService new CommonConversionServiceImpl();/*** 类型转换* param source* param targetType* param T* return*/public static T T convert(Object source, ClassT targetType) {return conversionService.convert(source, targetType);}8 使用工具 使用场景 studentModeDTO 转 StudentModeDO StudentModeDTO studentModeDTO new StudentModeDTO(); StudentModeDO studentModeDO CommonConvertUtil.convert(studentModeDTO, StudentModeDO.class);通过调用该封装好的工具即可。 以后只需要在 CommonConversionServiceImpl 加具体转换器即可使用在CommonConvertUtil 中使用 。 当时用于 CommonConversionServiceImpl 是需要默认初始化所有可以声明为工厂bean public class CommonConversionServiceFactoryBean implements FactoryBeanCommonConversionService,InitializingBean {/** 转换器定义 */private Set? converters;/** 通用转换服务 */private CommonConversionService conversionService;/*** 注入转换器* param converters*/public void setConverters(Set? converters) {this.converters converters;}Overridepublic CommonConversionService getObject() throws Exception {return this.conversionService;}Overridepublic Class? getObjectType() {return GenericConversionService.class;}Overridepublic boolean isSingleton() {return false;}/*** 创建转换服务* return*/protected CommonConversionService createConversionService() {return new CommonConversionServiceImpl();}Overridepublic void afterPropertiesSet() throws Exception {this.conversionService createConversionService();ConversionServiceFactory.registerConverters(this.converters, this.conversionService);} }
http://www.hkea.cn/news/14443756/

相关文章:

  • 贴吧网站建设网站建设中所需条件
  • 网站模板切换WordPress页面加分类文章
  • 龙岩网站建设找哪家wordpress在线编辑慢
  • 我自己做的一个网站显示证书错误WordPress速度快吗
  • 电子信箱注册网站在哪里进行网站域名的实名认证
  • 保定网站设计多少钱h5网站做微信小程序
  • 沧州市网站建设电话建筑公司注册资金最低多少
  • 提供企业网站建设方案国贸做网站公司
  • 手机微网站建设方案免费咨询律师软件
  • 网站开发公司气氛html5登录界面完整代码
  • 做亚马逊有哪些站外折扣网站黑白风格网站
  • 邯郸推广网站建设哪个好淮安做网站app
  • 河北省建设厅注册中心网站徐州市建设局网站首页
  • 珠宝类网站建设可执行报告抖音带运营给客户带来怎么样收益
  • 做的很好的淘宝客网站注册网站的费用
  • 电子商务旅游网站建设论文域名网站账号
  • 网站建设任务网站中的搜索功能怎么做
  • 柳州市住房和城乡建设局网站首页网站建设论坛快速建站
  • 做好三步网站改版工具不降权 无忧老师产品开发管理系统
  • 购买域名和网站设计制作实践活动感悟
  • 做网站可以用什么语言大连网页制作培训
  • 做网站运营需要学什么软件广西建设网桂建云系统
  • 自己做网站的流程视频教程太原关键词优化平台
  • 购物网站开发教程+视频安徽工程建设信息网站进皖企业
  • excel连接网站 做数据分析门户网站开发专业
  • 个人网站源码html广州 建网站
  • 大庆网站建设优化wordpress VIP账号插件
  • 随州便宜做网站吉林省城乡建设厅网站6
  • 虚拟钱包对接网站开发视频教程财务办公室装修设计
  • seo网站查询wordpress地图导航插件