Hallo zusammen,
Ich brauche eure Hilfe um meinen Codd zu refactorn
Also ich habe 3 Packages 2009, 2010 und 2011
die haben jeweils eine service class und eine factory class.
Also Service2009, Service2010 und Service2011 und je eine Factory class, die einfach Factory heißt.
Die factory klassen haben eine getInstance method und eine SetInstance.
Beispielsweise für 2011 sieht die Factory class so aus:
für weitere Jahren ändert sich einfach der generische Type K2011DTO und die Service2011 class entsprechend des Packages.
Desweiteren gibt es 3 andere Packages jahr2009, jahr2010 und jahr2011
Die haben je eine Gebe und eine Hole klasses.
Diese klassen benutzen die getInstance methode der factory classes.
Beispielweise für Gebe classs 2011 sieht das so aus:
Die EService ist eine Interface, welche so aussieht:
nun möchte ich die Factory class so refactorn, dass nur einmal für alle Jahren existiert und nicht für jedes Jahr einmal.
Ich hoffe ich habe mich verständlich ausgedrückt.
Ich brauche eure Hilfe um meinen Codd zu refactorn
Also ich habe 3 Packages 2009, 2010 und 2011
die haben jeweils eine service class und eine factory class.
Also Service2009, Service2010 und Service2011 und je eine Factory class, die einfach Factory heißt.
Die factory klassen haben eine getInstance method und eine SetInstance.
Beispielsweise für 2011 sieht die Factory class so aus:
Code:
public final class Factory {
private static EService<K2011DTO> instance;
private Factory() {}
public static void setInstance(final EService<K2011DTO> instance) {
Factory.instance = instance;
}
public static EService<K2011DTO> getInstance() {
if (instance != null) {
return instance;
} else {
return new Service2011();
}
}
}
Desweiteren gibt es 3 andere Packages jahr2009, jahr2010 und jahr2011
Die haben je eine Gebe und eine Hole klasses.
Diese klassen benutzen die getInstance methode der factory classes.
Beispielweise für Gebe classs 2011 sieht das so aus:
Code:
public final class Gebe2011 implements Processor {
@Override
public void process(final MainDTO request, final MainDTO response, final BearbeiterContext bearbeiterContext,
final FachContext fachContext) {
EService<K2011DTO> service = Factory.getInstance();
K2011DTO kDTO = DatenProcessor.REQUEST_HELPER.gebeRequestToDto(request,
K2011DTO.class);
service.gebe(fachContext, kDTO, request.getNachrichten());
}
}
Die EService ist eine Interface, welche so aussieht:
Code:
public interface EService<DTO> extends KService<DTO> {
}
Ich hoffe ich habe mich verständlich ausgedrückt.