designpattern:mvc:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
designpattern:mvc:start [2025/02/13 15:05] – [Observer-Pattern] Martin Pabst | designpattern:mvc:start [2025/02/14 07:23] (aktuell) – [Beispiel: Button, der Klicks zählt] Martin Pabst | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Weitere Design Patterns (" | ====== Weitere Design Patterns (" | ||
- | Wir haben bereits das [[datenstrukturen: | + | Wir haben bereits das [[listen: |
===== Observer-Pattern ===== | ===== Observer-Pattern ===== | ||
Zeile 6: | Zeile 6: | ||
{{ : | {{ : | ||
Das **Observer-Muster** dient der **Benachrichtigung anderer** (von einem Objekt abhängiger) **Objekte über Änderungen**. Die zu beobachtende Klasse (**Subject**) verfügt hierzu über die **Möglichkeit, | Das **Observer-Muster** dient der **Benachrichtigung anderer** (von einem Objekt abhängiger) **Objekte über Änderungen**. Die zu beobachtende Klasse (**Subject**) verfügt hierzu über die **Möglichkeit, | ||
- | Ein [[https:// | + | Ein [[https:// |
</ | </ | ||
Zeile 14: | Zeile 14: | ||
===== Model-View-Controller Pattern ===== | ===== Model-View-Controller Pattern ===== | ||
<WRAP center round info 80%> | <WRAP center round info 80%> | ||
- | {{ :designpatterns:pasted:20220201-124300.png?500}} | + | {{ :designpattern: |
Die **Model-Komponente** enthält die zu verwaltenden Daten und besitzt Methoden zum Ändern der Daten. Die **View-Komponente** (Präsentationsschicht) dient zur **Darstellung der Daten** aus dem Modell (z.B. am Bildschirm oder auf einer Webseite) und zur **Entgegennahme von Steuerbefehlen vom Benutzer** (z.B. Eingaben über Tastatur und Maus). Der **Controller** ist die Steuerungseinheit, | Die **Model-Komponente** enthält die zu verwaltenden Daten und besitzt Methoden zum Ändern der Daten. Die **View-Komponente** (Präsentationsschicht) dient zur **Darstellung der Daten** aus dem Modell (z.B. am Bildschirm oder auf einer Webseite) und zur **Entgegennahme von Steuerbefehlen vom Benutzer** (z.B. Eingaben über Tastatur und Maus). Der **Controller** ist die Steuerungseinheit, | ||
Zeile 63: | Zeile 63: | ||
} | } | ||
- | class View extends Rectangle implements | + | class View extends Rectangle implements |
Text text; | Text text; | ||
- | | + | |
Model model; | Model model; | ||
Zeile 99: | Zeile 99: | ||
move(-3, -3); | move(-3, -3); | ||
text.move(-3, | text.move(-3, | ||
- | | + | |
} | } | ||
Zeile 120: | Zeile 120: | ||
* Button-Klick | * Button-Klick | ||
*/ | */ | ||
- | | + | |
- | for(Object | + | for(ButtonListener |
- | ((ButtonListener)listener).onClick(); | + | |
} | } | ||
} | } | ||
Zeile 140: | Zeile 140: | ||
<script type=" | <script type=" | ||
- | interface | + | interface |
void onChange(); | void onChange(); | ||
} | } | ||
Zeile 149: | Zeile 149: | ||
| | ||
- | | + | |
| | ||
counter++; | counter++; | ||
- | | + | |
} | } | ||
Zeile 163: | Zeile 163: | ||
* ChangeListener registrieren | * ChangeListener registrieren | ||
*/ | */ | ||
- | | + | |
changeListenerList.add(listener); | changeListenerList.add(listener); | ||
} | } | ||
Zeile 170: | Zeile 170: | ||
* ChangeListener deregistrieren | * ChangeListener deregistrieren | ||
*/ | */ | ||
- | | + | |
changeListenerList.remove(listener); | changeListenerList.remove(listener); | ||
} | } | ||
Zeile 178: | Zeile 178: | ||
* des Models. | * des Models. | ||
*/ | */ | ||
- | | + | |
- | for(Object | + | for(MyChangeListener |
- | ((ChangeListener)listener).onChange(); | + | |
} | } | ||
} | } |
designpattern/mvc/start.1739459117.txt.gz · Zuletzt geändert: 2025/02/13 15:05 von Martin Pabst