5ffdcfd3c2f90e03fddf168202835ca02343cfa9
MVC.md
| ... | ... | @@ -0,0 +1,57 @@ |
| 1 | +# Model-View-Controller |
|
| 2 | + |
|
| 3 | +MVC ist ein Design-Pattern (zu deutsch: Entwurfsmuster), das sehr gut bei [OER-Informatik] (https://oer-informatik.de/gui_pattern_mvc) beschrieben wird. |
|
| 4 | + |
|
| 5 | + Martin Fowler: |
|
| 6 | +> Make a strong separation between presentation (view & controller) and domain (model). |
|
| 7 | + |
|
| 8 | + |
|
| 9 | + |
|
| 10 | +## Graphische Darstellung |
|
| 11 | + |
|
| 12 | +Realisiert mit Mermaid in MarkDown: |
|
| 13 | + |
|
| 14 | +```mermaid |
|
| 15 | +classDiagram |
|
| 16 | + class Model { |
|
| 17 | + +getData() String |
|
| 18 | + +setData(data: String) void |
|
| 19 | + } |
|
| 20 | + |
|
| 21 | + class View { |
|
| 22 | + +displayData(data: String) void |
|
| 23 | + +getUserInput() String |
|
| 24 | + +update() void |
|
| 25 | + } |
|
| 26 | + |
|
| 27 | + class Controller { |
|
| 28 | + +handleInput(input: String) void |
|
| 29 | + +notifyModel(data: String) void |
|
| 30 | + +notifyView() void |
|
| 31 | + } |
|
| 32 | + |
|
| 33 | + |
|
| 34 | + View --> Controller : sendet Benutzereingabe |
|
| 35 | + Model --> Controller : liefert Daten |
|
| 36 | + Controller --> Model : aktualisiert Daten |
|
| 37 | + Controller --> View : erneuert Ansicht |
|
| 38 | + |
|
| 39 | +``` |
|
| 40 | + |
|
| 41 | +## Das Model |
|
| 42 | + |
|
| 43 | +Das Model regelt und kapselt den Zugriff und die Verarbeitung der Daten der Problemdomäne und hält den Zustand, der diese Daten repräsentiert. Nur der Teil der Geschäftslogik, der direkt mit der Speicherung, Änderung, Löschung oder Erzeugung von Daten zusammenhängt, liegt im Verantwortungsbereich des Models, ebenso wie Operationen, die unmittelbar auf dem Model ausgeführt werden müssen (z.B. die Berechnung von abgeleiteten Attributen wie z.B. Durchschnitten oder anderen derivied values). |
|
| 44 | + |
|
| 45 | +## Die View |
|
| 46 | + |
|
| 47 | +Die View ist verantwortlich für die Präsentation der Daten eines Models. Es ist möglich, dass unterschiedliche Views die selben Daten unterschiedlich darstellen. Das selbe Model kann unter Umständen als Liste, Tabelle, Formular oder Diagramm dargestellt werden oder für unterschiedliche Endgeräte (als Website, DesktopApp oder für andere Geräte). |
|
| 48 | + |
|
| 49 | +## Der Controller |
|
| 50 | + |
|
| 51 | +Er nimmt die Anfragen des Benutzers entgegen (teilweise mittelbar über die View), gibt Datenänderungen an das Model weiter. Er ruft also unmittelbar die Getter- und Setter-Methoden des Models auf. |
|
| 52 | +Er wählt die korrekte View aus, stellt die nötigen Daten zusammen und sendet alles an den anfragenden Client oder aktualisiert die jeweilige Komponente der View. |
|
| 53 | + |
|
| 54 | +## Vorteil |
|
| 55 | + |
|
| 56 | +Die View kann ausgetauscht werden (statt Swing, nun HTML oder Qt) ohne dass Controller oder Model verändert werden müssen. |
|
| 57 | +Die Datenhaltung kann getauscht werden (JSON oder sqlite statt Datenbank) und View und Controller sind konstant. |
|
| ... | ... | \ No newline at end of file |