用Command实现校验器
来源:互联网 发布:react.js ui 编辑:程序博客网 时间:2024/06/05 18:57
最近工作中遇到许多校验的数据,一直用if-else去校验很不灵活,于是用Command方式去实现
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"default-autowire="byName"><bean id="uerVerification" class="com.steven.UserVerification" /><bean id="mobileVerification" class="com.steven.MobileVerification" /><bean id="codeVerification" class="com.steven.CodeVerification" /><bean id="orderVerification" class="com.steven.OrderVerification" /><bean id="orderVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="orderVerification" /></map></constructor-arg></bean><bean id="codeVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="codeVerification" /></map></constructor-arg></bean><bean id="mobileVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="mobileVerification" /></map></constructor-arg></bean><bean id="uerVerificationMap" class="java.util.HashMap" > <constructor-arg><map><entry key="check" value-ref="uerVerification" /></map></constructor-arg></bean><!-- 实现类 --> <bean id="gdActivityServiceInvoker" class="com.test.ServiceInvoke" > <property name="verifyMap"><map><entry key="checkUer" value-ref="uerVerificationMap" /> <entry key="checkMobile" value-ref="mobileVerificationMap" /><entry key="checkCode" value-ref="codeVerificationMap"/><entry key="checkOrder" value-ref="orderVerificationMap"/></map></property> </bean></beans>注:上述配置文件,可以灵活的使用校验器,也可以灵活的增加或者删除校验器,并且支持执行校验器特定的方法。
public abstract class ActivityServiceInvoker {/** * 校验参数 * verifyType 表示特定的校验器 */public abstract ActivityResult checkParamter(String verifyType,ActivityParamter paramter);@SuppressWarnings({ "unchecked", "rawtypes" })public ActivityResult execute(Verification verification, String method, ActivityParamter paramter) throws Exception {Class clazz = verification.getClass();Method clzMethod = clazz.getDeclaredMethod(method,ActivityParamter.class);return (ActivityResult) clzMethod.invoke(verification, paramter);//执行特定的校验方法}}
每一个校验器可以继承ActivityServiceInvoker这个类,然后复写public abstract ActivityResult checkParamter(String verifyType,ActivityParamter paramter);这个方法即可。
public class OrderServiceInvokerImpl extends ActivityServiceInvoker{private LinkedHashMap<String,HashMap<String, Verification>> verifyMap;//可以灵活的注入校验器private static final Log LOG = LogFactory.getLog(OrderServiceInvokerImpl.class);public ActivityResult checkParamter(String verifyType,ActivityParamter paramter){//在这里进行数据校验return result;}public void setVerifyMap(LinkedHashMap<String, HashMap<String, Verification>> verifyMap) {this.verifyMap = verifyMap;}}每一个实现类里,可以配置一个verifyMap来灵活的校验。
0 0
- 用Command实现校验器
- 用Javascript实现Command模式
- 简单实现修改密码校验器
- 用汇编语言实现BCH解码校验算法
- 校验函数用JS来实现
- 用 CRC32 算法实现程序自校验
- 用C语言实现CRC校验
- bootstrap用validate简单实现校验
- java 实现CRC32校验
- Javascript实现前台校验
- js 身份证号码校验实现
- java 实现CRC32校验
- CRC16校验算法实现
- 汇编语言实现CRC校验
- 子网掩码校验函数实现
- CRC校验的实现
- CRC16校验算法实现
- CRC16校验算法实现
- [转]开发大型高负载类网站应用的几个要点
- leetcode 014 —— Longest Common Prefix
- sizeof和strlen
- 实现基于Memcache存储的Session类
- 凸优化:ADMM(Alternating Direction Method of Multipliers)交替方向乘子算法系列之十: Implementation
- 用Command实现校验器
- android studio集成友盟v2.3消息推送
- Mac上配置Ant打包工具
- 20.顺时针打印矩阵
- HtmlParser学习系列 -- 学习总结
- struts2概述
- 凸优化:ADMM(Alternating Direction Method of Multipliers)交替方向乘子算法系列之十一:Numerical Examples
- encodeURIComponent 的作用和encodeURI的区别
- VS 2005使用map文件查找程序崩溃原因