Wederzijdse dependency of niet?
Ik zit met een vraag over OO ontwerp. Stel nu dat ik een loginsysteem heb dat bestaat uit gebruikers. Maar elke gebruiker behoort tot één of meer groepen. Dan maak ik een user klasse en een group klasse. Maar welke relatie maak ik dan? Ik wil dat als ik een "group" laad, ik zijn "users" krijg. Maar als ik een "user" laad, ik ook zijn "group" objecten krijg. Maar stel nu dat ik een "group" object laad. Dan laadt die ook zijn "users" en die "users" laden op hun beurt weer de "groups" waar zij instaan. En die "groups" laden op hun beurt weer hun "users" en zo kom je eigenlijk in een cirkel terecht. Hoe los ik dit op?
Gewijzigd op 20/09/2013 13:36:49 door -Jens -
Zit een new User automatisch meteen in een group? Dat hoeft niet noodzakelijk. Je kunt een User-object bijvoorbeeld gebruiken bij het openen van een account. Pas als dat succesvol is afgerond, is duidelijk in welke group de user thuishoort.
Dus jij zou geen Group-objecten opslaan in een member van User?
Het kan wel, maar waarom zou je het automatisch doen? In 99 van de 100 gevallen heb je waarschijnlijk alleen de groep namen nodig en helemaal niet alle users die daarin zitten (en andersom). Dus waarom zou je dat automatisch willen doen? Kost alleen maar tijd en resources.
-Jens - op 20/09/2013 14:34:01:
Dus jij zou geen Group-objecten opslaan in een member van User?
Het kán wel, maar ik zou het (a) niet automatisch doen en (b) nooit met een compleet gevulde group met alle data en andere toeters en bellen. Je kunt bijvoorbeeld een kale class Group gebruiken met het hoogst noodzakelijke en daaraan een class GroupAdministration extends Group toevoegen voor functionaliteit zoals het tonen van alle users, het wijzigen van de group-rechten, enzovoort.
Verder is beginnen met één user behoort tot één group in de praktijk ook wel eens iets waarvan je achteraf spijt kunt krijgen: gebruikers kunnen tot meerdere groepen behoren.
Toevoeging op 20/09/2013 15:13:12:
@Ward:
-Jens - op 20/09/2013 13:36:10:
Maar elke gebruiker behoort tot één of meer groepen.
Waarom lees je nu niet gewoon? Zowel Ward als ik zeggen dat je het gewoon niet automatisch in moet laden! Welk objecten je allemaal maakt moet je helemaal zelf weten.