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

基于php网站开发设计网店推广实训报告

基于php网站开发设计,网店推广实训报告,kratos主题wordpress,多商户商城app开发策略模式-使用枚举newInstance 前言一、枚举类#xff1a;MarkCheckDataTypeEnum二、抽象类#xff1a;AbstractMarkChecker三、检查类#xff1a;MarkPeopleChecker四、demo演示总结 前言 很久没写文章了~~ 吐槽下#xff1a;入职新公司后#xff0c;基本在搬砖#xf… 策略模式-使用枚举newInstance 前言一、枚举类MarkCheckDataTypeEnum二、抽象类AbstractMarkChecker三、检查类MarkPeopleChecker四、demo演示总结 前言 很久没写文章了~~ 吐槽下入职新公司后基本在搬砖我爱劳动我光荣~ 遇到一个小需求根据接口入参-不同类型进行不同字段的检查。不想写if…else嵌套就写了个最简单的策略模式。 一、枚举类MarkCheckDataTypeEnum 创建一个枚举类将业务实现类作为枚举的一个属性 如 STD_PEOPLE(“std_people”, MarkPeopleChecker.class) public enum MarkCheckDataTypeEnum {/*** 主体-人*/STD_PEOPLE(std_people, MarkPeopleChecker.class),/*** 主体-房屋*/STD_HOUSE(std_house, MarkHouseChecker.class),/*** 主体-小区*/STD_RESIDENTIAL(std_residential, MarkResidentialChecker.class),/*** 主体-商铺*/STD_BUSINESS(std_business, MarkBusinessChecker.class),/*** 主体-企业*/STD_ENTERPRISE(std_enterprise, MarkEnterpriseChecker.class),/*** 主体-区域*/STD_PARK(std_park, MarkParkChecker.class),;/*** 主体类型*/private String dataType;/*** 主体的预检查类*/private Class? checker;MarkCheckDataTypeEnum(String dataType, Class checker) {this.dataType dataType;this.checker checker;}public String getDataType() {return dataType;}public void setDataType(String dataType) {this.dataType dataType;}public Class? getChecker() {return checker;}public void setChecker(Class? checker) {this.checker checker;}/*** 根据主体获取检查类** param dataType 主体类型* return 检查类* throws Exception new实例异常*/public static AbstractMarkChecker getMarkChecker(String dataType) throws Exception {for (MarkCheckDataTypeEnum markCheckDataTypeEnum : MarkCheckDataTypeEnum.values()) {if (markCheckDataTypeEnum.getDataType().equals(dataType)) {return (AbstractMarkChecker) markCheckDataTypeEnum.getChecker().newInstance();}}return MarkCommonChecker.class.newInstance();} }二、抽象类AbstractMarkChecker BusinessException这个是自定义异常用于抛出检查类检查不通过的原因。 1有点编码基础的也可以换成自己的异常类 2或者把不通过的原因返回出来如 public abstract String check(ListString assetFieldNameList);我的代码如下 import lobster.base.exception.BusinessException; import org.springframework.stereotype.Service;import java.util.List;/*** 保存标注时进行必要信息检查* 人* 未检测到【证件号】或者【姓名】【手机号】标注字段而有其他人员非必要信息字段标注的情况下* 提示您的标注信息未包含人员必要信息字段【证件号】或【姓名手机号】可能导致人员信息数据无法入库请仔细检查。* p* 房屋* 未检测到【房屋地址】或者【楼栋单元楼层房号】或者【房号】标注字段而有其他房屋非必要信息字段标注的情况下* 提示您的标注信息未包含房屋必要信息字段【房屋地址】或【楼栋单元楼层房号】或【房号】可能导致房屋信息数据无法入库请仔细检查。* p* p* 小区* 未检测到【小区名】标注字段而有其他小区非必要信息字段标注的情况下* 提示您的标注信息未包含小区必要信息字段【小区名】可能导致小区信息数据无法入库请仔细检查。* p* 商铺* 未检测到【商铺名称商铺地址】标注字段而有其他商铺非必要信息字段标注的情况下* 提示您的标注信息未包含商铺必要信息字段【商铺名称商铺地址】可能导致商铺信息数据无法入库请仔细检查。* p* 企业* 未检测到【企业名称企业地址】标注字段而有其他企业非必要信息字段标注的情况下* 提示您的标注信息未包含企业必要信息字段【企业名称企业地址】可能导致企业信息数据无法入库请仔细检查。* p* 区域* 未检测到【区域名称】标注字段而有其他区域非必要信息字段标注的情况下* 提示您的标注信息未包含区域必要信息字段【区域名称】可能导致区域信息数据无法入库请仔细检查。** author lobster*/ Service public abstract class AbstractMarkChecker {/*** 检查主体必要字段** param assetFieldNameList 当前主体标注时选择的字段* throws BusinessException 业务异常*/public abstract void check(ListString assetFieldNameList) throws BusinessException; }三、检查类MarkPeopleChecker 检查类和MarkCheckDataTypeEnum的checker对应。 这里只贴一个MarkPeopleChecker检查类都差不多 import lobster.base.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;import java.util.List;/*** 人* 未检测到【证件号】或者【姓名】【手机号】标注字段而有其他人员非必要信息字段标注的情况下* 提示您的标注信息未包含人员必要信息字段【证件号】或【姓名手机号】可能导致人员信息数据无法入库请仔细检查。** author lobster*/ Slf4j Service public class MarkPeopleChecker extends AbstractMarkChecker {private static final String NAME name;private static final String ID_CARD id_card;private static final String MOBILE mobile;Overridepublic void check(ListString assetFieldNameList) throws BusinessException {boolean containsName assetFieldNameList.contains(NAME);boolean containsIdCard assetFieldNameList.contains(ID_CARD);boolean containsMobile assetFieldNameList.contains(MOBILE);if (containsIdCard) {log.info(标注主体std_people 存在【证件号】);return;}if (containsName containsMobile) {log.info(标注主体std_people 存在【姓名】【手机号】);return;}throw new BusinessException(500, 您的标注信息未包含人员必要信息字段【证件号】或【姓名手机号】可能导致人员信息数据无法入库请仔细检查);} }四、demo演示 直接执行main方法就行 代码如下示例 import com.example.springDemo.markprecheck.MarkCheckDataTypeEnum; import com.google.common.collect.Lists; import lobster.base.exception.BusinessException; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;Slf4j RestController(mark/pre/check) public class MarkPreCheckController {GetMapping(value demo, name 通过枚举实现策略)public static String demo() {try {MarkCheckDataTypeEnum.getMarkChecker(std_people).check(Lists.newArrayList(name, sex));} catch (BusinessException e) {log.error(出现业务异常, e);return e.getMsg();} catch (Exception e) {log.error(出现系统异常, e);return e.getMessage();}return success;}//直接执行main方法就行public static void main(String[] args) {String errorMsg demo();System.out.println(errorMsg);} }实例代码打印结果 总结 总来的来emm~~这个示例很简单没啥说的。 主要是通过MarkCheckDataTypeEnum.getMarkChecker()来获取检查类实例然后调用检查类的check方法。 通过扩展枚举类MarkCheckDataTypeEnum与具体的检查类对代码进行解耦。但解耦不多不如工厂策略的方式。
http://www.pierceye.com/news/839337/

相关文章:

  • 做品牌折扣微信推广的网站网站换主机换域名
  • 营销型网站有哪些建设流程怎样制作免费的网站
  • 天津建设工程计价网站手工加工网
  • 温州做美食网站网站建设的方案模板下载
  • 如何快速网站备案以用户为中心 建设学校网站
  • 宣传型网站有哪些宁波建设信息港网站
  • php网站开发是做什么的phpcms v9企业网站模板(简洁利于优化)
  • 什么是网站和网页wordpress启用插件出错
  • asp网站制作工具怎么样做国际网站生意
  • 签订网站建设合同山东建设工程招标网官方网站
  • 迅速建设企业网站外贸网站服务器选择
  • 建设网站详细流程wordpress建站数据库
  • 贵阳建立网站聊城网站建设设计
  • 网站怎么设置关键词百度网址大全首页设为首页
  • 中企动力网站怎么样怎么做公司内网网站
  • 求职网站网页模板一个网站可以做多少个小程序
  • 深圳市住房和建设局网站登录怎样在百度建网站
  • 外国做视频在线观看网站asp简单网站开发
  • 介绍移动互联网的网站有哪些做网站时怎么选择数据库类型
  • 工厂的网站在哪里做的免费建站的软件
  • 中国电子系统建设三公司网站网站建设上如何提高市场竞争力
  • 青海住房和建设厅网站电子商务网站建设与管理教案
  • 免费在线自助建站搬瓦工可以长期做网站
  • 建设外贸网站报价外贸网站制作推广公司
  • 网站开发人员工作内容白沟做网站
  • 产品展示网站模板源码产品宣传
  • 国内wordpress有名的网站河南住房和城乡建设厅网站资质
  • 湛江seo建站wordpress5.1更新
  • 泊头公司做网站做网站价格差异很大
  • 网站开发啊wordpress 图片本地化