> For the complete documentation index, see [llms.txt](https://biglazytables.gitbook.io/big-lazy-tables/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://biglazytables.gitbook.io/big-lazy-tables/konzepte/mvc.md).

# MVC

[BLT](/big-lazy-tables/bachelorarbeit-ip6-big-lazy-tables-fur-das-kolibri-toolkit.md) ist nach dem Architekturmuster Model View Controller (klassisch) aufgebaut.&#x20;

Der Ansatz dieses Konzeptes besteht darin, eine **eindeutige Aufgabenteilung** zu schaffen.&#x20;

Das Model repräsentiert die **Daten** und Zustände, der Controller definiert die **Logik** und das Verhalten der Applikation und die View **visualisiert**.&#x20;

{% hint style="info" %}
Die vier [Projektoren ](/big-lazy-tables/system/module/projectors.md)repräsentieren die View. Ein Projektor erzeugt eine Präsentation und etabliert die Bindings.
{% endhint %}

Die View hat Zugriff auf den Controller. Wird vom Endnutzer eine Aktion auf der View ausgeführt, gibt diese dem Controller Bescheid, dass ein Befehl seitens des UI eingegangen ist.&#x20;

Der Controller nimmt diesen Befehl auf, fügt nötige Logik hinzu, macht einen Service-Call und bewirtschaftet das Model. Sobald das Model sich verändert hat, informiert dieses über den Controller die View, welche sich auf der Veränderung registriert hat.&#x20;

![BLT MVC Concept](https://3950294961-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fc3pqMW5ZzqJsqoL0PPqS%2Fuploads%2FxlKvzcJL6pQQJlIM7Qln%2FMVC%201.png?alt=media\&token=de0022d2-0d2c-4f52-b0f9-7597abfbf9c4)

Die View passt sich dem neuen Model an und dasselbe Model kann auf mehrere Arten repräsentiert werden. Durch dieses Konzept agieren Views unabhängig und ein **Entfernen** oder **Hinzufügen** von Views ist möglich ohne in der restlichen Applikation Anpassungen machen zu müssen.&#x20;

Auch hat es den Vorteil, dass es für das Model keine Rolle spielt wie viele Views sich registriert haben.&#x20;

Model und View kommunizieren vollumfänglich über den Controller und nie direkt miteinander.
