[Java] MVC: meerdere models of niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ghehe
  • Registratie: April 2011
  • Laatst online: 09-10 18:13

Ghehe

400 pound hacker

Topicstarter
Voor school moet ik een applicatie ontwikkelen die een stopwatch heeft en een aantal vragen die je dan zo snel mogelijk moet oplossen. Nu ben ik me al een tijdje suf aan het denken over welk design ik het best zou nemen.

Ik heb - volgens mezelf toch - 2 opties:
1) Ik heb 2 models, eentje die de vragen bevat en bijhorende methodes daarvoor heeft en eentje die de tijd bijhoudt en methodes daarvoor heeft. (En ook methodes voor het Observer pattern met de views natuurlijk)

Voordeel: De controller heeft twee models en kan meteen methodes (zoals startStopWatch() bij het StopWatchModel) aanroepen van de stopwatch (wat niet het geval is bij optie 2).
Nadeel: Je moet elke view bij 2 models laten registreren als observer en je controller heeft 2 models.

Prentje: http://cl.ly/20303J31033O2O0E1M1K

2) Ik heb 1 model, namelijk die met de vragen en met methodes om de stopwatch te controlleren. (het model heeft een instantie van de stopwatch) De controller moet zich dan helemaal niets van verschillende soorten timers en dergelijke aantrekken, hij roept gewoon het model aan.
Voordeel: 1 model, simpeler gestructureert voor controller en view. En toch Single Responsibility want de timer functionaliteit zit in een aparte klasse.
Nadeel: Het model werkt ook half als een controller (een methode wordt aangeroepen vanuit de controller en model bepaalt zelf welke methode het aanroept bij de StopWatch, vb: Controller zegt model.startTimer() -> model zegt dan in die methode timer.startOpDieManier() ofzo :d ).

Prentje: http://cl.ly/16042L3P0T0Z2b1j0s41

---

Ik zou zelf voor optie 1 kiezen omdat bij optie 2 een model ook zelf weer andere klasses begint aan te roepen en hun methodes terwijl je bij optie 1 je gewoon 2 models hebt die elk data bevatten en getters hebben voor de observers (als je gegevens pulled toch) en methodes om hun data te veranderen voor de controllers.

Op school zijn we nog maar effe bezig met MVC, dus het kan zijn dat ik een hele foute redenering heb gemaakt. :9

Nu mijn vraag: Welke optie lijkt voor jullie het beste? Of ben ik helemaal fout bezig en zou je het geheel anders doen (dan graag een duwtje in de goede richting :P )?

Alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 09-10 22:10
Een kwestie van granulariteit. Wat zie je als een view. Als je per view een controller aanhoudt en je zie je hele JFrame met alle subpanels en componenten daarvan als één view, dan heb je een controller nodig die nogal veel verantwoordelijkheden kent. Ik denk dat je je scherm beter kan opknippen in kleinere views die dan hun eigen controller kennen en het model dat voor die specifieke view relevant is.