Próbuję napisać tę kompozycję i póki co wymyśliłem coś takiego, że kategoria to obiekt w relacji 1 do 1 z obiektem produkt, która posiada pola wszystkich obiektów które miały być dziedziczone, a podczas inicjalizacji uzupełnia się tylko pola dla danej kategorii. Czy mógłbyś mi podpowiedzieć czy takie coś ma sens?
Kategoria 1:1 ? Coś mi świta, tylko że to już nie jest kategoria.
Przemycasz znów implementację wielotabelową (table per type), i łączysz w jednym dwie koncepcje: pola dodatkowe i jeden dystynktywny atrybut
(skomplikowane już gadamy)
Jak mowa o RBD musimy zawiesić część swoich doświadczeń z wysokiej jakości OOP. Na styku nigdy nie było, nie jest i nie będzie idealnie, różnica paradygmatów.
Moja 'Kategoria
to aż i tylko taki słownik "Hej, ja jestem produktem żywieniowym", "hej, ja higienicznym"', właściwie trudno tu wymyśleć więce niż jedno pole "Nazwa kategorii"
class Kategoria {
String nazwa
// bebechy pod JPA, Id itd ...
}
h = new Kategoria("Higienicze")
Więc zawieszając swoją wiedzę o OOP (sorry, Winnetou, ale biznes is biznes), ja bym poszedł
a) jeden atrybut dystynktywny, Strig lub w/w dyskutowana obiektowa kategoria (ładne z poziomu kluczy RBD, przy okazji zobacz komu się bardziej kłaniamy, obiektom czy bazie)
b) w atrybuty proste dla pól dodatkowych (pewnie jakieś nieco anonimowe, uzyskujące interpretację po podaniu kategorii, najbezpieczniej String)
czyli String attribute1 -> uzyskuje interpretację Nr zezwolenia MZ dla medycznych, jakąś tam dla Higienicznych
Strig attribute2
Strig attribute3
W ogole KOD SYSTEMU o jakim myślę, nie ma wiedzy o Higienicznych, jest to jedna z możliwych wartości w bazie.
Mogę się mylić, gdyby - wracam do punktu wyjścia - podtypy się różniły mocno, i trzeba było silnie to wyrazić - zamrażając system do niemożliwości handlowania Warzywami. Być może robimy system TYLKO dla hurtowni leków, której nie wolno handlować czym innym ...
że ja sympatyzuję mocno ku otwartemu systemowi do wszystkich produktów, to nie znaczy, że jest to jedyne.
... i znów zataczając koło
gdyby jednak po mojemu to
Towar {
pola stałe ...
String atrybut1;
String atrybut2;
String atrybut3;
}
class Kategoria {
String nazwa // Medyczne
// bebechy pod JPA, Id itd ...
String attr1Caption ; // 'Nr zez min zdrowia'
String attr2Caption ; // 'ble ble'
String attr3Caption ; // 'bla bla'
}
Za taki design nigdy nie dostanę uścisku ręki na Katedrze OOP, ale wzbudzę entuzjazm w Instytucie RBD