Kilka ogólnych pytań - ze szczegółami sobie chyba poradzę, ale nie wiem w którym kierunku mam iść.
Powiedzmy, że mam klasę główną Zadanie, z której dziedziczy kilkadziesiąt klas np:
abstract class Zadanie {
Date dataRozpoczęcia;
Date dataZakończenia;
TypZadania typZadania
}
class Grabienie extends Zadnie {
String typGrabi;
}
class Kopanie extends Zadanie {
String typSzpadla;
}
itd...
Ze względu na to, że znaczna część kodu będzie się powtarzała, jak najlepiej to ogarnąć?
Czy jest możliwość stworzenia jednego kontrolera dla Zadania i walidacji w zależności od przesłanych danych? No i czy to jest dobry pomysł? Czy jednak lepiej użyć @RequestMapping dla każdego zadania osobno (tj. /grabienie/, /kopanie/ itp) i napisać osobne walidatory dla każdej klasy? Oczywiście jest to w jakiś sposób powiązane z warstwą serwisową, która ma wyglądać mniej więcej tak :
abstract class ZadanieBaseServiceImpl {
saveZadanie();
}
class ZadanieServiceImpl extends ZadanieBaseServiceImpl {
}
class KopanieServiceImpl extends ZadanieBaseServiceImpl {
wybierzSzpadel();
}
class GrabienieServiceImpl extends ZadanieBaseServiceImpl {
wybierzGrabie();
}
Klasa TypZadania jest zapisana w bazie i przyjmuje wartość w zależności od klasy dziedziczącej np. [ID-Nazwa] 1-Kopanie, 2-Grabienie itp. Czyli po pobraniu z bazy listy wszystkich zadań możemy rozpoznać ich typ. Nie wiem czy jest to lepsze rozwiązanie od instanceof czy nie. Jeżeli nie, to w jakim kierunku powinienem iść?
Zależy mi w głównej mierze na tym, żeby kod był zwięzły i bez powtarzania, żeby nie było dużych problemów np. przy dodawaniu nowych klas czy pól.