gpt4 book ai didi

java - 抽象类避免创建对象的多个实例来传递不同的输入

转载 作者:行者123 更新时间:2023-12-02 01:04:05 25 4
gpt4 key购买 nike

我正在尝试使用抽象类重构一个类,并试图了解我的方法是否正确。

对于我收到的每个对象,我有一个基本 validator ,它执行一些基本检查,然后有一个自定义 validator ,它根据对象类型执行一些额外的验证。我觉得这是抽象类的一个很好的用途。

public abstract class Validator {
BaseValidator baseValidator;
abstract void customValidation();

void validateObject() {
baseValidator.validate(getInputObject());
customValidation();
}

abstract String getInputObject();
}

public TypeAValidator extends Validator {
@Override
public void customValidation() {
//Do something with getInputObject();
}

@Override public String getInputObject() {
return "someInput";
}
}

我认为将每个输入都作为 getter 的一部分似乎不是正确的方法。如果我采用非抽象类方法,我会这样做:

public TypeAValidator {
BaseValidator baseValidator;

public void validateObject(String inputObject) {
baseValidator.validate(inputObject);
customValidation(inputObject);
}
}

使用这种方法,我需要做的就是调用 typeAValidator.validateObject(inputObject) ,而无需每次都创建 TypeAValidator 的新实例,而我需要使用抽象类方法。我建模抽象类的方式有问题吗?

最佳答案

您可以混合自己的两种解决方案来制作类似的东西

public abstract class Validator {
BaseValidator baseValidator;

protected abstract void customValidationOnObject(String inputObject);

public void validateObject(String inputObject) {
baseValidator.validate(inputObject);
customValidationOnObject(inputObject);
}
}

class TypeAValidator extends Validator{

@Override
protected void customValidationOnObject(String inputObject) {
// custom validate the Object
}
}

您可以在单个 TypeAValidator 对象上调用 TypeAValidator.validateObject(inputObject)

关于java - 抽象类避免创建对象的多个实例来传递不同的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60270280/

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