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

iis 多网站资讯网站策划怎么写

iis 多网站,资讯网站策划怎么写,网站设计宁波,html5微网站模板使用工厂策略模式实现去除繁琐的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.dnsts.com.cn/news/73074.html

相关文章:

  • 做个网站得投入多少网络营销试题库及答案
  • 以net结尾的网站高仿网站源码
  • 经开区网站建设服装网站建设策划书可行性分析
  • 化妆品网站栏目设计wordpress 随机文章
  • 小学校园文化建设网站临沂网站建设和轶件安装
  • 网站接入商查询浙江人才网
  • 之梦与wordpress哪个好用浙江短视频seo优化网站
  • seo 网站淄博做网站建设公司
  • 公司的 SEO与网站建设聊城做网站的公司
  • 用电脑做网站的历史在哪里找长治推广型网站开发
  • 网站开发的软件环境网站建设好后如何连接服务器
  • 咸阳个人兼职网站建设国家建筑标准设计网
  • 网站设计 开发人员商城做网站好还是淘宝
  • 网站需求分析报告二维码生成器表白文字
  • 如何拿高权重网站外链进行互换?做网站的不给源文件
  • 手机信息分类网站制作网站开发的实例教程
  • discu论坛网站模板首次登录 e账户客户登录
  • 微信文档seo黑帽技术工具
  • 张掖做网站清远做网站哪家好
  • 浙江杰立建设集团 网站首页营业推广的目标通常是
  • 怎么做关注网站江门做网站多少钱
  • c语言做网站后端wordpress 图片居中
  • 网站照片如何处理易名域名解析到手机网站
  • 松江 企业网站建设怎么查看一个网站是用什么程序做的
  • canvas做的网站高端装修公司展厅布置
  • 问答网站建设怎么提问成全视频免费观看在线看ww
  • 网站正在建设中色综合广州网站建设支付
  • 深圳seo关键词优化长沙优化网站哪家公司好
  • 网站制作代理wordpress可以显示歌词
  • 网站建设报价 东莞浏览器打开网站