10 svar
114 visningar
erze7811 102
Postad: 16 mar 2023 19:31

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!

CurtJ Online 1200
Postad: 16 mar 2023 20:53

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å? 

anders_k 237
Postad: 17 mar 2023 11:10 Redigerad: 17 mar 2023 11:10

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.

erze7811 102
Postad: 17 mar 2023 18:13

Ska det se ut på detta sättet?

anders_k 237
Postad: 17 mar 2023 20:37

Tänk mer på vad fasaden kan göra för dig som klient.

Så vilka user-case har en klient?

erze7811 102
Postad: 17 mar 2023 21:15

Att välja datum och hur många personer?

anders_k 237
Postad: 18 mar 2023 08:47

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å.

erze7811 102
Postad: 18 mar 2023 18:49

Hur blir detta?

Ska jag göra en klient klass också? Och hur ska den fungera isåfall?

anders_k 237
Postad: 18 mar 2023 21:38 Redigerad: 18 mar 2023 21:41

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.

erze7811 102
Postad: 19 mar 2023 15:53

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?

anders_k 237
Postad: 19 mar 2023 18:32

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.

Svara
Close