ultddave
Legacy Member
Hey,
Ik had twee vraagjes ivm het MVC-pattern (Model View Controller). Hoe zouden jullie de volgende situatie aanpakken:
Vraag 1:
Je hebt een LoginModel-klasse, een LoginController-klasse en een LoginWindow-klasse die dus respectievelijk de Model, Controller en View voorstellen.
Indien de gebruiker op de loginknop op de GUI drukt, dan wordt de onClick-event gewoon doorgegeven aan de Controller en die roept de relevante functie aan op de model. No problem. Window Close Events kan je op die manier ook doorgeven aan de controller (ik denk niet dat hij die moet doorspelen naar de model, want de model heeft niets te maken met dat soort events van de View?). Dus de controller kan dan de nodige stappen ondernemen.
Maar hoe moet het in de omgekeerde richting? => De gebruiker drukt op de loginknop => onClick event naar controller => controller roept "login()" functie op van de model. De model beslist dat de gebruiker mag inloggen en als gevolg moet het LoginWindow dus sluiten.
Uiteraard kan je via de Model een "viewCloseEvent" uitsturen, die via de controller de view bereikt etc. maar is dat opzich de taak van de model?
Of moet de controller dit regelen, bijvoorbeeld op deze manier :
(In de veronderstelling dat de model.login() functie "true" returned als de login succesvol was.)
Vraag 2:
Wie heeft de verantwoordelijkheid voor de programmaflow te regelen? Concreet: Aansluitend aan vraag 1, wie beslist welke view/model/controller aangemaakt moet worden nadat de gebruiker met succes is ingelogd. Is dat de controller? Eg:
Op internet vind je veel voorbeelden van MVC-implementaties, maar meestal zijn dat gewoon drie klassen die ze laten zien. Dus zonder programmaflow en meestal ook zonder closeEvents.
Dank bij voorbaat.
Greetz,
Dave
Ik had twee vraagjes ivm het MVC-pattern (Model View Controller). Hoe zouden jullie de volgende situatie aanpakken:
Vraag 1:
Je hebt een LoginModel-klasse, een LoginController-klasse en een LoginWindow-klasse die dus respectievelijk de Model, Controller en View voorstellen.
Indien de gebruiker op de loginknop op de GUI drukt, dan wordt de onClick-event gewoon doorgegeven aan de Controller en die roept de relevante functie aan op de model. No problem. Window Close Events kan je op die manier ook doorgeven aan de controller (ik denk niet dat hij die moet doorspelen naar de model, want de model heeft niets te maken met dat soort events van de View?). Dus de controller kan dan de nodige stappen ondernemen.
Maar hoe moet het in de omgekeerde richting? => De gebruiker drukt op de loginknop => onClick event naar controller => controller roept "login()" functie op van de model. De model beslist dat de gebruiker mag inloggen en als gevolg moet het LoginWindow dus sluiten.
Uiteraard kan je via de Model een "viewCloseEvent" uitsturen, die via de controller de view bereikt etc. maar is dat opzich de taak van de model?
Of moet de controller dit regelen, bijvoorbeeld op deze manier :
Code:
void onLoginButtonClick(EventStuff e)
{
if(model.login())
view.close();
// Else => model doet een propertyChangeEvent met de foutcode en uitleg
}
Vraag 2:
Wie heeft de verantwoordelijkheid voor de programmaflow te regelen? Concreet: Aansluitend aan vraag 1, wie beslist welke view/model/controller aangemaakt moet worden nadat de gebruiker met succes is ingelogd. Is dat de controller? Eg:
Code:
void onLoginButtonClick(EventStuff e)
{
if(model.login()) {
view.close();
MainController c = new MainController(); // Maakt de bijhorende view en model aan
c.launch();
}
// Else => model doet een propertyChangeEvent met de foutcode en uitleg
}
Op internet vind je veel voorbeelden van MVC-implementaties, maar meestal zijn dat gewoon drie klassen die ze laten zien. Dus zonder programmaflow en meestal ook zonder closeEvents.
Dank bij voorbaat.
Greetz,
Dave
, thanks.