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

iis 多网站网站原创文章优化

iis 多网站,网站原创文章优化,网站建设服务开税率多少的票,零基础编程入门自学使用工厂策略模式实现去除繁琐的if else 在中间有一个mapstruct的bug#xff0c;即在修改实体类中的类型时#xff0c;或者修改属性名字#xff0c;mapstruct都无法进行转换#xff0c;会报错#xff0c;此时需要maven cleanmaven compile即可 前言 在这次的开发中#…使用工厂策略模式实现去除繁琐的if else 在中间有一个mapstruct的bug即在修改实体类中的类型时或者修改属性名字mapstruct都无法进行转换会报错此时需要maven cleanmaven compile即可 前言 在这次的开发中有一个增加题目的需求其中题目中有SubjectType对应4种不同的类型单选多选判断简答。在增加题目的接口中如果对每个都if一遍十分繁琐也不利于后期的扩展于是选择交给工厂方法去处理每一个类型的题目有自己的策略类型然后通过工厂进行创建 创建枚举类型 对应的枚举类型目的是方便通过传入的Type值是1234对应四种不同的题型 并且写出方法根据code找出枚举类 package com.gy.subject.common.enums;public enum SubjectTypeEnum {Radio(1,单选),Multiple(2,多选),Judge(3,判断),Brief(4,简答);private int code;private String desc;SubjectTypeEnum(int code,String desc){this.code code;this.desc desc;}public static SubjectTypeEnum getByCode(int code){for(SubjectTypeEnum x : SubjectTypeEnum.values()){if(x.code code){return x;}}return null;} } 创建策略类接口 策略类即却确定了是这个类型里面包含了具体业务逻辑比如确定了是单选题之后那么就要增加一道单选题目以及后续的业务此处是把题目对应的标签及分类也增加上其实后续的业务也可以不在此处添加让策略类只专注于对于的题型处理 定义了每个具体的策略类可以做获取具体的枚举类用于后面根据type找出以及具体的业务增加代码类 package com.gy.subject.domain.handler;import com.gy.subject.common.enums.SubjectTypeEnum; import com.gy.subject.domain.entity.SubjectInfoBO; import org.springframework.stereotype.Component;/*** ClassName SubjectTypeHandeler* Description 题目处理器* Author gy* Date 2024/12/29*/ Component public interface SubjectTypeHandeler {/*** Description: 获取处理器类型* Param: []* return: com.gy.subject.common.enums.SubjectTypeEnum* Author: gy* Date: 2024/12/29*/SubjectTypeEnum getHandelerType();/*** Description: 添加题目* Param: [subjectInfoBO]* return: void* Author: gy* Date: 2024/12/29*/void add(SubjectInfoBO subjectInfoBO);} 具体的策略类 以创建一个单选为例实现抽象策略类接口 package com.gy.subject.domain.handler;import com.google.common.base.Preconditions; import com.gy.subject.common.enums.SubjectTypeEnum; import com.gy.subject.domain.convert.RadioSubjectConverter; import com.gy.subject.domain.entity.SubjectInfoBO; import com.gy.subject.infra.basic.entity.SubjectMapping; import com.gy.subject.infra.basic.entity.SubjectRadio; import com.gy.subject.infra.basic.service.SubjectMappingService; import com.gy.subject.infra.basic.service.SubjectRadioService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;import javax.annotation.Resource; import java.util.LinkedList; import java.util.List;/*** ClassName RadioTypeHandler* Description 单选的处理器* Author gy* Date 2024/12/29*/ Component public class RadioTypeHandler implements SubjectTypeHandeler {Resourceprivate SubjectRadioService subjectRadioService;Resourceprivate SubjectMappingService subjectMappingService;/*** Description: 获取单选处理器类型* Param: []* return: com.gy.subject.common.enums.SubjectTypeEnum* Author: gy* Date: 2024/12/29*/Overridepublic SubjectTypeEnum getHandelerType() {return SubjectTypeEnum.Radio;}/*** Description: 添加题目* Param: [subjectInfoBO]* return: void* Author: gy* Date: 2024/12/29*/Overridepublic void add(SubjectInfoBO subjectInfoBO) {ListSubjectRadio radioList new LinkedList();//ListSubjectMapping subjectMappingList new LinkedList();Preconditions.checkNotNull(radioList,单选的四个答案list不能为空);subjectInfoBO.getOptionList().forEach(option - {SubjectRadio radio RadioSubjectConverter.INSTANCE.converterAnswerToRadio(option);radio.setSubjectId(subjectInfoBO.getId());radioList.add(radio);});subjectRadioService.batchInsert(radioList);// subjectInfoBO.getCategoryIds().forEach(categoryId - { // subjectInfoBO.getLabelIds().forEach(labelId - { // SubjectMapping subjectMapping new SubjectMapping(); // subjectMapping.setSubjectId(subjectInfoBO.getId()); // subjectMapping.setCategoryId(Long.valueOf(categoryId)); // subjectMapping.setLabelId(Long.valueOf(labelId)); // subjectMappingList.add(subjectMapping); // }); // }); // // subjectMappingService.batchInsert(subjectMappingList);} } 接下来可以创建不同的题型如若想要扩展题型那么只需要增加一个枚举类 创建工厂类 工厂类中从bean工厂中找出题型的策略类组成一个list目的是注入到map中方便根据type从map中直接找出具体策略类。 其实不用map也可以直接遍历一次通过enum的value.code 进行对比使用map技术层面来说更好 package com.gy.subject.domain.handler;import com.gy.subject.common.enums.SubjectTypeEnum; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component;import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map;/**** 题目类型工厂* author 高悦* version 1.0* description: TODO* date 2024/12/29 17:09*/Component public class SubjectTypeHandlerFactory implements InitializingBean {Resourceprivate ListSubjectTypeHandeler subjectTypeHandelerList;private MapSubjectTypeEnum,SubjectTypeHandeler subjectTypeHandelerMap new HashMap();public SubjectTypeHandeler getSubjectTypeHandler(int SubjectType){SubjectTypeEnum subjectTypeEnum SubjectTypeEnum.getByCode(SubjectType);return subjectTypeHandelerMap.get(subjectTypeEnum);}Overridepublic void afterPropertiesSet() throws Exception {for(SubjectTypeHandeler x : subjectTypeHandelerList){subjectTypeHandelerMap.put(x.getHandelerType(),x);}} } 业务层 业务层中就可以解放了工厂直接根据type选择到具体的策略然后执行业务 //上一个工厂加策略的形式//一个工厂 包含了4种类型根据传入的type自动映射选择处理//可以节省一大堆的if因为题目信息里面要有选择是单选还是多选SubjectInfo subjectInfo SubjectInfoBOConverter.INSTANCE.SubjectInfoBOtoInfo(subjectInfoBO);SubjectInfo insert subjectInfoService.insert(subjectInfo);subjectInfoBO.setId(insert.getId());SubjectTypeHandeler subjectTypeHandler subjectTypeHandlerFactory.getSubjectTypeHandler(subjectInfoBO.getSubjectType());subjectTypeHandler.add(subjectInfoBO);
http://www.hkea.cn/news/14459008/

相关文章:

  • 铜仁网站优化广告设计案例网站
  • 网站 多语言设计制作中国第一架飞机的人
  • phpcms做装修网站阿里云一键建站网站
  • 公司网站建设流程巴南网站建设哪家好
  • 网站建站建设怎么做马鞍山做网站的公司
  • 用python做网站后端最快多久studio网站开发
  • 梁头网站建设中国建筑集团有限公司官网招标网
  • 什么是网站架构网页设计与制作课程代码
  • 网站开发系统架构图网络体系结构
  • 湖南网站建站系统哪家好网站合作建设方案
  • 集团网站建设特点互联网课堂搜索引擎入口yandex
  • 建设工程信息发布网站大学生毕业设计网页设计
  • 如何做好一个外贸进网站的编辑微网站 微信网站
  • 网站注销重新备案深圳软件开发
  • 网站开发 图片存放怎么设置公司网站
  • c2c网站页面设计特点我需要网站
  • 天津市建设工程监理公司网站wordpress伪静态规则
  • 淄博网站制作怎么收费好项目寻找个人投资
  • 怎么做好网站营销nike网站策划与建设
  • 模板网站有什么不好厦门成交型网站建设公司
  • 设计网站公司湖南岚鸿设计广州好的做网站公司
  • 怎么取网页视频网站元素空间设计图片
  • 企业门户网站的建设费用开网站建设公司心得
  • 17网站一起做网店潮汕微信小程序制作平台官网
  • 建设网站要什么电脑搭建wordpress环境搭建
  • 企业网站icp镇江网站设计建设
  • 网站缩略图代码h5做网站用什么软件
  • 网站后台管理系统怎么添加框做网站视频是什么专业
  • 关于行业网站建设意见怎样制作自己店铺的小程序
  • 平谷网站建设公司长沙做网站一般多少钱