Voor mijn stage ben ik bezig met een project dat ontwikkeld wordt in Java op het J2EE platform. Ik ben nu bezig met een klassendiagram / TO en loop nu tegen een design-issue aan.
Er is een (web)applicatie waar verschillende soorten klanten op kunnen inloggen. Er zijn 3 soorten klanten : Directe, Indirecte en Contactpersonen. In UML heb ik het zo gemodelleerd:

De 3 verschillende klanten erven de gezamenlijke eigenschappen van de Base-class. Als een klant nu inlogt d.m.v zijn gebruikersnaam en wachtwoord wordt er via de KlantEJB gekeken of deze bestaat.
Het probleem is nu dat ik niet alleen de algemene klant gegevens wil hebben, maar ook de specifieke.
De oplossing die ik zelf bedacht heb, is om een extra attribuut aan de Base-class toe te voegen: klant_type, en dan vervolgens met een if / switch statement een ejbSelect-query uit te voeren die dan een IndirectKlant object returned.
Ik zie hier wel een aantal nadelen:
Op ONJava.com staat nog een leuk artikel over Inheritance in J2EE
Er is een (web)applicatie waar verschillende soorten klanten op kunnen inloggen. Er zijn 3 soorten klanten : Directe, Indirecte en Contactpersonen. In UML heb ik het zo gemodelleerd:

De 3 verschillende klanten erven de gezamenlijke eigenschappen van de Base-class. Als een klant nu inlogt d.m.v zijn gebruikersnaam en wachtwoord wordt er via de KlantEJB gekeken of deze bestaat.
Het probleem is nu dat ik niet alleen de algemene klant gegevens wil hebben, maar ook de specifieke.
De oplossing die ik zelf bedacht heb, is om een extra attribuut aan de Base-class toe te voegen: klant_type, en dan vervolgens met een if / switch statement een ejbSelect-query uit te voeren die dan een IndirectKlant object returned.
Ik zie hier wel een aantal nadelen:
- De code is minder schaalbaar, voor elke klanttype moet er nieuwe switch/if komen.
- Wat zou er gebeuren als ik van het IndirecteKlantEJB de voornaam opvraag? ( dit ga ik morgen proberen
)
Op ONJava.com staat nog een leuk artikel over Inheritance in J2EE