Facademönster
Hej, jag tränar på uppgifter inför en tenta och har fastnat på denna uppgift:
Är osäker hur jag ska göra för att implementera detta facademönster och skulle behöva hjälp med att lösa uppgiften.
Tack på förhand!
Se fasad-klassen som en aktör som håller ihop ett antal aktiviteter. I det här fallet så har du Bröllopsfixare som gör allt som hör till ett bröllop i metoden fixaBröllop. I bröllopet ingår att boka festlokal, boka hotellsvit, boka bröllopet i kyrkan och boka mat. I mönstret så motsvarar Facade.doSomething() din metod fixaBröllop. KOmmer du vidare då?
Som CurtJ redan sagt är det frågan om att skapa ett antal metoder i fasad klassen som klienten ropar.
t.ex.
klienten ropar BröllopsFixare.bokaBröllop(datum); som då internt hanteras i någon klass för detta ändamål, sen ropar klienten BröllopsFixare.bokaSvit(datum) som kanske hanteras av en annan klass. med andra ord, klienten pratar bara med fasaden och vet inte/bryr sig inte hur implementationen ser ut bakom fasaden.
Ska det se ut på detta sättet?
Tänk mer på vad fasaden kan göra för dig som klient.
Så vilka user-case har en klient?
Att välja datum och hur många personer?
Att kolla om ett datum är ledigt i kyrkan, catering är tillgänglig, hotell osv. är centralt.
Så om en klient använder din fasad så vill han/hon kolla ett visst datum om det är tillgängligt samt om antalet gäster får plats i hotell/kyrka/festlokal att catering fungerar också.
Hur blir detta?
Ska jag göra en klient klass också? Och hur ska den fungera isåfall?
I det enklaste fallet: det finns bara en lokal som rymmer x personer, ett hotell med y rum, en kyrka och en catering firma med standardmat så ropar du bara fixaBrollop med olika datum och antal gäster - det är vad en klient skulle göra. Sen får du hålla reda på vad som redan är bokat, hur många lediga rum som finns på hotellet vid bokningsdatumet och andra saker, sen returnerar du olika felmeddelanden beroende på om lokalen är för liten, kyrkan redan bokad, inte nog med lediga rum på hotellet osv.
I ett mer realistiskt fall har man flera lokaler, flera hotell, kanske olika typer av matpreferenser osv. men problemställningen blir den samma som ovan, det är bara att man får leta efter något som passar.
Det du visar ovan har ingen felhantering, fast du kanske skulle kunna slänga en exception till klienten och på så vis meddela ev fel fast egentligen vill man nog som klient få en lista över saker som inte gick.
Okej då förstår jag tack! Om det är okej kan jag ställa en till kort fråga här?
På b uppgiften, vad som är skillnaden mellan att använda referensen c och ref r. Kan man säga att bara referensen c kan vara en cykel medans r kan vara alla av de rullande fordonen?
Ja, c kan bara referera till en instans av Cykel medans r är deklarared av basklasstyp Rullande och kan därför referera till instanser som ärver från Rullande som t.ex. Skateboard.