# MVC - Wo beginnt man?



## gegel (31. Okt 2005)

Hallo Leute

ich möchte wieder einmal eine Frage zum Thema MVC stellen. Mit welchem Teil von MVC soll man bei der Instanzierung generell beginnen? Ist es der Controller, welcher sich dann die Referenz zum Model und/oder zur View erstellt? Welcher Teil bringt die ganze Kette am ehesten ins Rollen? bisher habe ich eigentlich immer mit der View begonnen, doch das passt mir einfach nicht so ganz. Was sind hier so eure best practices?

TIA gegel


----------



## Beni (31. Okt 2005)

Macht das einen Unterschied? :wink:

Da bei mir das Model (meist) erst erzeugt werden kann, wenn der Benutzer irgendwelche Dateien öffnet, beginne ich mit dem Controller, dann der View.


----------



## bygones (1. Nov 2005)

wenn du ne klare Struktur in deinem Konzept hast ist es eigentlich wurscht, mit was du zu implementieren beginnst.

Ich fang meistens mit dem Grundgerüst für das Model an und dann je nach dem worauf ich gerade Lust hab


----------



## frager (7. Apr 2006)

hi, also ich würd mit dem view beginnen. dann die controller bauen und das model... na ja, das ergibt sich ja dann. was fürne anwendung hast du denn?

viele grüße


----------



## AlArenal (7. Apr 2006)

frager hat gesagt.:
			
		

> hi, also ich würd mit dem view beginnen. dann die controller bauen und das model... na ja, das ergibt sich ja dann. was fürne anwendung hast du denn?



Wie erstellt man einen View für ein noch nicht existentes Model???

Ich mache mir zunächst Gedanken zu den Daten, baue also das Model. Anschließend entwickle ich den View, teste somit auch gleich das Model auf Praxistauglichkeit. Zum Schluss kommt der Controller.


----------



## lin (7. Apr 2006)

halte es auch eher für schwer, mit der view zu beginnen... ausser man weiss genau, wie das Programm am Ende aussehen soll...


----------



## byte (7. Apr 2006)

Also entweder habe ich die Frage falsch verstanden oder ihr. Er will nicht wissen, welchen Teil er als erstes designen soll sondern welchen Teil er als erstes instanziert. Sprich: Struktur von Model, View sowie Controller steht schon.


----------



## Campino (10. Apr 2006)

Also ich hab immer eine Controller-Klasse, die eine View-Instanz und eine Model-Instanz enthält. Folglich instanziere ich zuerst den Controller

Dabei dient der Controller quasi als Verbindung, d.h. die View ruft NIE direkt Model-Methoden auf, sondern immer welche des Controllers, die die Ergebnisse des Models quasi "durchreichen". Ist das eigentlich so gedacht? AlArenals Reihnfolge würde ich nämlich nicht machen können, den ohne Controller kommt die View nicht an die Daten...


----------



## AlArenal (10. Apr 2006)

@campino:

Zum Lesen der Daten greift der View auf den Controller zu und nicht aufs Model? Wozu soll das gut sein? Ich bezweifle sehr stark, dass JTable, JTree & Co. so arbeiten...


----------



## frager (11. Apr 2006)

hi, ja klar, wenn man noch NICHT weiss, was man überhaupt konkret machen will, dann macht man sich erstmal gedanken übers model, also was für entitäten es gibt und welche anderen geschäftsprozesse und so weiter. also kann man eine fallunterscheidung machen:

1. kompletter neubau des programms:

man überlegt sich, was man machen will und wie man das am besten auf entitäten etc abbildet. klassisches beispiel wäre da ja person oder kunde etc. dann überlegt man sich, welche geschäftsprozesse nötig sind. hat man das umgesetzt, ist das model ja fertig. dann weiss man ja auch, welche daten des models grafisch dargestellt werden sollen.

2. man weiss schon was es im model gibt:

na ja, klar wie kloßbrühe, dann gehts gleich mit dem view los. na ja, wer jetzt was zuerst aufruft, da würd ich so vorgehen und mache das auch immer so . 


1. bei einem event in der gui wird ja eine actionperformed aufgerufen. in dieser methode wird eine passende methode im controller aufgerufen mit eventuellen parametern. also was weiss ich 


```
//im view
GuiController gc = new GuiController();
String content=gc.loadTextFile(File);
```


2. der controller wendet sich dann über eine fassade, welche sich ans modell wendet, welches sich an die datenschicht wendet und die datei öffnet und ausliest und erhält einen string zurück. das ist der dateiinhalt.


```
//im controller
Facade f = new Facade();
f.loadTextFile(File); //hier könnte man auch noch Stragedy anwenden um verschiedene dateiarten zu unterstützen
```



3. jetzt öffnet der controller entweder ein neues fenster mit dem dateiinahlt oder er ruft eine methode zum beispiel


```
view.updateEditor(content);
```

auf um den inhalt im view darzustellen. also kennt die gui nur den controller, welcher ja trotzdem austauschbar bleibt, solang der name gleich ist. der controller kennt nur die fassade zum modell (anwendungsschicht) und ist somit lose gekoppelt und unabhängig von dem subsystem (dem model) welches durch die fassade gekaplselt wird. hm..so mach ichs immer. kritiken?

viele grüße


----------

