gpt4 book ai didi

java - 验证数据

转载 作者:行者123 更新时间:2023-11-29 03:37:51 24 4
gpt4 key购买 nike

我有两个 validator 类。假设:Car Validator 和 Wheel validator,第二个包含在第一个中。

CarBodyValidator.validate(){
WheelValidator.validate();
}

我在 CarBodyValidator、f.e EngineValidator 等中有更多 validator 。validate() 应该只返回 true 或 false,一次我想打印尽可能多的错误(如果某些类的验证返回 false,我想验证其他类,如果它们不相互依赖的话)。现在,假设 Wheel validator 返回了一个有用的信息,我需要在 CarBody validator 中使用该信息。 F.e 如果车轮直径太大,那么我需要汽车 validator 中的信息来验证其他东西。我如何传递该信息。我可以在 Wheel validator 中创建一个存储参数的字段,但可以像这样访问它:

carBodyValidator.validate(){
wheelValidator.validate();
if (WheelValidator.getSmomething() == somethingElse){
...
}

}

似乎是错误的(我的意思是 validator 应该只验证而不做任何其他事情)。这是正确的方法还是我应该采取不同的方法。

最佳答案

在这种情况下,我经常依赖观察者模式。请注意,这都是伪代码。

创建一个 ValidatorObserver 接口(interface)。

public interface ValidatorObserver{
public void notify(int errorKey);
}

让 CarBodyValidator 实现这个接口(interface)。

public class CarBodyValidator implements ValidatorObserver{

public void notify(int errorKey){
switch(errorKey){
//Evaluate cases and do something.
}
}
}

在 WheelValidator 上创建注册方法并设置通知

public class WheelValidator{
private List<ValdiatorObserver> observers = new ArrayList<ValidatorObserver>();

public void addObserver(ValidatorObserver observer){
observers.add(observer);
}

public void validate(){
//if validation fails
for(ValidationObserver observer: observers){
observers.notify(1); //1 is an error code
}
}
}

您需要在代码中的某处注册观察者

CarBodyValiator cbValidator = new CarBodyValidator();
WheelValidator wheelValidator = new WheelValidator();
wheelValidator.addObserver(cbValidator);

关于java - 验证数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14559396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com