其他分享
首页 > 其他分享> > 新增、修改操作时自定义复杂逻辑校验-2022新项目

新增、修改操作时自定义复杂逻辑校验-2022新项目

作者:互联网

一、业务场景

  项目开发中常规的操作免不了会有新增和修改,这两个操作中有很多内容都是相同的比如参数的校验方式,几乎

都是一模一样的,对于其中不能使用 Validation 校验的逻辑,需要自主校验的逻辑也完全是一模一样的。某些校验是

有另外一个校验作为前提,这时使用 Validation 来进行校验就实现不了。举个例子:如果是举办活动,活动类型为线下

活动,则需要填写活动地址;如果是线上活动则不需要举办地址,这种校验只能采取手动检验。

二、需求分析

  最开始的时候自己是写两遍代码,新增的时候写一遍自定义的校验逻辑,修改的时候在写一遍校验的逻辑,这种方式也

没什么毛病,反正都是复制粘贴。可是当其中的校验逻辑短期内确定不下来的时候,时不时修改起来就感觉很麻烦,每次都

需要修改两个地方。自己在考虑有没有什么简便的方法来解决这个问题呢?让自己只写一遍代码,只改一个地方就能达到同

样的效果呢?

三、解决方案

  有这种想法后,自己就在不断地思考,首先能够考虑到的就是抽取校验逻辑到一个方法中,这样就只需要修改一次即可。

可是这样处理的话,新增和修改操作中如何知道是校验通过还是不通过?这就需要一个返回值,继而考虑如何在构造这个返回

值对象,校验时有两点是需要知晓的,校验结果通过还是不通过。如果不通过,则不通过的原因是什么,即是错误信息。根据

这个分析设计做出一个简单的校验类如下:

/**
* @Author yilang
* @Description 校验结果返回类
* @Date 2022/7/16 16:21
* @Version 1.0
*/
@Data
public class ValidateResult {

/*
* 校验结果
*/
private boolean isResult;


/*
* 错误信息
*/
private String errorMessage;
}

经过简单的尝试,发现这种方式能够达到要求。在抽取的私有自定义校验方法中的第一行,先创建一个
空对象,然后进行校验操作。当校验不通过的时候,将其值设置false,同时设置错误信息,最后返回
该对象。在新增方法中调用该方法,如果校验不通过则直接返回,并且将该错误信息一并返回,修改方法
中也是同样的处理方式。经过测试这种方式完全可行,之后写自定义的复杂逻辑校验时,只需要写一遍
代码即可,减少了代码量,让代码更加地简洁。后来经过不断地改进,最终的类定义如下:
import lombok.Data;

/**
* @Author yilang
* @Description 校验结果返回类
* @Date 2022/7/16 16:21
* @Version 1.0
*/

@Data
public class ValidateResult {

public ValidateResult() {}

public ValidateResult(boolean defaultResult) {
this.isResult = defaultResult;
}

/*
* 校验结果
*/
private boolean isResult = false;

/*
* 错误信息
*/
private String errorMessage = "";

public boolean isResult() {
return this.isResult;
}

public ValidateResult setResult(boolean result) {
this.isResult = result;
return this;
}

public ValidateResult setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
return this;
}
}
这种方式更加的简化,也更加的灵活。伪代码如下,直接创建空对象,校验结果默认为false,
如果校验不通过,则直接返回。最终校验通过就给一个值true,如下示例
ValidateResult validateResult = new ValidateResult();
//校验逻辑
//校验不通过 
return validateResult.setErrorMessage("错误信息");
//校验逻辑
return validateResult.setResult(true);
如果创建该对象时,想给一个默认值为 true,也可以通过有参构造在传入,这个看个人的习惯。这种方式
通过测试完全可行,有其他好方法的小伙伴欢迎留言。

标签:逻辑,isResult,return,自定义,错误信息,校验,2022,ValidateResult
来源: https://www.cnblogs.com/yilangcode/p/16484571.html