在平常项目开发中,不知道你们有没有遇上这么一个现象:业务模块在进行某个业务运算前, 都要先通过一些验证。随着业务扩展,这些验证越来越多,if-else的写法越来越显得麻烦,而且很多部分不能实现复用。基于为解决以上痛点,我用采用这样的写法,效果还不错。
废话不多说,看Demo。
验证接口类:Condition.java
/**
* 验证接口
* @param <T>
*/
public interface Condition<T> {
/**
* 验证
* @param t
*/
void valid(T t);
}
验证条件实现类:UserTypeCondition.java
/**
* 用户类型验证条件
* @author rocky
* @date 2018-11-16 13:53
*/
public class UserTypeCondition implements Condition<User> {
@Override
public void valid(User user) {
if (user.getUserType() != UserType.MEMBER) {
throw new ValidException("用户不是会员,不能执行该操作。");
}
}
}
/**
* 用户类型
*/
public enum UserType {
/**
* 普通用户
*/
ORDINARY,
/**
* 会员用户
*/
MEMBER;
}