[C++] [Qt] Ein Beispiel mit dem MVC und Observer Design Pattern.

Ray 151954eb0e removed empty signals and slots 2 years ago
LICENSE 5c76572329 'LICENSE' hinzufügen 2 years ago
MVCObserverDemo.pro e604ef1401 initial 2 years ago
MVCObserverDemo.pro.user 46260e98d1 visual style changes 2 years ago
README.md 0bc4565fe5 'README.md' ändern 2 years ago
main.cpp 1ac72d42c9 GPLv3 License added, added destructors 2 years ago
mainwindow.cpp 46260e98d1 visual style changes 2 years ago
mainwindow.h 151954eb0e removed empty signals and slots 2 years ago
mainwindow.ui e604ef1401 initial 2 years ago
mainwindowcontroller.cpp 46260e98d1 visual style changes 2 years ago
mainwindowcontroller.h 151954eb0e removed empty signals and slots 2 years ago
mainwindowmodel.cpp 46260e98d1 visual style changes 2 years ago
mainwindowmodel.h 1ac72d42c9 GPLv3 License added, added destructors 2 years ago

README.md

C++ MVC Observer Demo

Ein Beispiel mit dem MVC und Observer Design Pattern.

In diesem Beispiel Projekt habe ich eine einfache GUI mit Swing gebaut. Diese enthält zwei Elemente. Einmal ein JLabel und ein JButton. Die Interaktion des Benutzers sorgt dafür, dass sich der Wert des JLabels sich jeweils um 1 erhöht.

Zum Einsatz kamen gleich zwei Design Pattern. Zum einen das MVC, d.h. strikte Trennung von Logik und Ansicht, gesteuert durch den Controller und zum anderen das Observer Pattern, welche dafür sorgt, dass die View aktualsiert wird wenn sich der Wert im Model ändert.

Es gibt verschiedene Arten von MVC, welche man umsetzen kann. Dabei habe ich mich für folgendes Design entschieden, damit alle Komponenten von einander getrennt und somit jeder Zeit austauschbar sind. Dabei ist diese Umsetzung sogar unabhängig von einer grafischen Oberfläche und kann zum Beispiel in der Konsole ebenfalls benutzt werden.

Auch die Listener werden vom Controller verwaltet, denn diese haben die Aufgabe die Methoden im Model aufzurufen. Deshalb verwaltet die View nicht die Listener.

Bei diesem Beispiel Projekt wurde dabei auf die Vollständigkeit der Klassen (nach OOP Philosophie) sowie Sicherheit (richtiger Einsatz von Sichtbarkeitsmodifikatoren) geachtet. An dieser Stelle ist auch mein Programmierstil deutlich zu erkennen.

Ein Beispiel in Java mit Swing findest du hier: https://git.ray-works.de/Ray/JavaMVCObserverDemo