Hinzufügen von Logik für einen bestimmten Typ in einer generischen Klasse in JavaJava

Java-Forum
Anonymous
 Hinzufügen von Logik für einen bestimmten Typ in einer generischen Klasse in Java

Post by Anonymous »

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post