Hinzufügen von Logik für einen bestimmten Typ in einer generischen Klasse in Java
Posted: 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).
Duplikate Validator [/b]
numberRanges validator
Validator Factory
BUSSchedulevalidator Factory
FlightSchedulevalidator
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.
Code: Select all
public abstract class BaseValidator {
public BaseValidator(Function validatorInput) {
this.validatorInput = validatorInput;
}
public ValidationResult validate() {}
public addNotificationListener() {}
public removeNotificationListener() {}
....
}
Code: Select all
public class ValidateNoDuplicates extends BaseValidator {
public ValidateNoDuplicates(Function validatorInput) {
super(validatorInput);}
public ValidationResult validate() {
//Use validatorInput to validate
}
}
Code: Select all
public class ValidateNumberRanges extends BaseValidator {
public ValidateNumberRanges(Function validatorInput) {
super(validatorInput);}
public ValidationResult validate() {
//Use validatorInput to validate
}
}
BUSSchedulevalidator Factory
Code: Select all
public class BusScheduleValidatorFactory implements ScheduleValidatorFactory {
public ValidateNoDuplicates createNoDuplicateCheck() {
return new ValidateNoDuplicates();
}
public ValidateNumberRanges createRangeCheck() {
return new ValidateNumberRanges();
}
}
Code: Select all
public class FlightScheduleValidatorFactory implements ScheduleValidatorFactory {
public ValidateNoDuplicates createNoDuplicateCheck() {
return new ValidateNoDuplicates();
}
public ValidateNumberRanges createRangeCheck() {
return new ValidateNumberRanges();
}
}