by Anonymous » 11 Apr 2025, 21:18
In Java ist der beste Weg, um
gemeinsame Logik zu implementieren. Jeder Validator erbt von einem Basis -Validator und verwendet Generika, um mehrere Objekte zu validieren. Weitere Informationen finden Sie in den folgenden Beispielen. Zum Beispiel möchte ich das Alter der Objekte überprüfen und dann die Kritikalität (dringend, brauchen Aufmerksamkeit, Info usw.) des Validierungsergebnisses. Die validierten Objekte sind unterschiedlich und teilen sich keine gemeinsame Basisklasse, um das Alter beispielsweise abzuleiten. Da dies jedoch generisches verwendet wird, kann ich nicht in der Lage sein, das Alter des Objekts auf dieser Ebene zu erhalten, ohne zu wissen, welches Objekt validiert wird (und alle sind völlig unterschiedlich, ohne Grenzfläche oder Basisklasse).Code: Select all
public abstract class BaseValidator {
public BaseValidator(Function validatorInput) {
this.validatorInput = validatorInput;
}
public ValidationResult validate() {}
public addNotificationListener() {}
public removeNotificationListener() {}
....
}
Duplikate Validator [/b]
Code: Select all
public class ValidateNoDuplicates extends BaseValidator {
public ValidateNoDuplicates(Function validatorInput) {
super(validatorInput);}
public ValidationResult validate() {
//Use validatorInput to validate
}
}
numberRanges validator
Code: Select all
public class ValidateNumberRanges extends BaseValidator {
public ValidateNumberRanges(Function validatorInput) {
super(validatorInput);}
public ValidationResult validate() {
//Use validatorInput to validate
}
}
Validator Factory
BUSSchedulevalidator Factory
Code: Select all
public class BusScheduleValidatorFactory implements ScheduleValidatorFactory {
public ValidateNoDuplicates createNoDuplicateCheck() {
return new ValidateNoDuplicates();
}
public ValidateNumberRanges createRangeCheck() {
return new ValidateNumberRanges();
}
}
FlightSchedulevalidator
Code: Select all
public class FlightScheduleValidatorFactory implements ScheduleValidatorFactory {
public ValidateNoDuplicates createNoDuplicateCheck() {
return new ValidateNoDuplicates();
}
public ValidateNumberRanges createRangeCheck() {
return new ValidateNumberRanges();
}
}
Ich möchte die Schwere der Validierung entscheiden, basierend darauf, wie alt der Bussschedule/FlightSchedule ist. Und
ich möchte nicht jeden Validator mit dieser Logik aktualisieren.
In Java ist der beste Weg, um [b] gemeinsame Logik zu implementieren. Jeder Validator erbt von einem Basis -Validator und verwendet Generika, um mehrere Objekte zu validieren. Weitere Informationen finden Sie in den folgenden Beispielen. Zum Beispiel möchte ich das Alter der Objekte überprüfen und dann die Kritikalität (dringend, brauchen Aufmerksamkeit, Info usw.) des Validierungsergebnisses. Die validierten Objekte sind unterschiedlich und teilen sich keine gemeinsame Basisklasse, um das Alter beispielsweise abzuleiten. Da dies jedoch generisches verwendet wird, kann ich nicht in der Lage sein, das Alter des Objekts auf dieser Ebene zu erhalten, ohne zu wissen, welches Objekt validiert wird (und alle sind völlig unterschiedlich, ohne Grenzfläche oder Basisklasse).[code]public abstract class BaseValidator {
public BaseValidator(Function validatorInput) {
this.validatorInput = validatorInput;
}
public ValidationResult validate() {}
public addNotificationListener() {}
public removeNotificationListener() {}
....
}
[/code]
Duplikate Validator [/b]
[code]public class ValidateNoDuplicates extends BaseValidator {
public ValidateNoDuplicates(Function validatorInput) {
super(validatorInput);}
public ValidationResult validate() {
//Use validatorInput to validate
}
}
[/code]
[b] numberRanges validator [/b]
[code]public class ValidateNumberRanges extends BaseValidator {
public ValidateNumberRanges(Function validatorInput) {
super(validatorInput);}
public ValidationResult validate() {
//Use validatorInput to validate
}
}
[/code]
[b] Validator Factory [/b]
[b] BUSSchedulevalidator Factory [/b]
[code]public class BusScheduleValidatorFactory implements ScheduleValidatorFactory {
public ValidateNoDuplicates createNoDuplicateCheck() {
return new ValidateNoDuplicates();
}
public ValidateNumberRanges createRangeCheck() {
return new ValidateNumberRanges();
}
}
[/code]
[b] FlightSchedulevalidator [/b]
[code]public class FlightScheduleValidatorFactory implements ScheduleValidatorFactory {
public ValidateNoDuplicates createNoDuplicateCheck() {
return new ValidateNoDuplicates();
}
public ValidateNumberRanges createRangeCheck() {
return new ValidateNumberRanges();
}
}
[/code]
Ich möchte die Schwere der Validierung entscheiden, basierend darauf, wie alt der Bussschedule/FlightSchedule ist. Und [url=viewtopic.php?t=14917]ich möchte[/url] nicht jeden Validator mit dieser Logik aktualisieren.