Java Reference
In-Depth Information
5.6.3.4
Entwurfsmuster im MVC
Es gibt beim MVC-Muster keine festen Vorgaben, welche Entwurfsmuster enthalten
sein müssen. Es gibt mehrere Varianten und je nach den Anforderungen der Anwen-
dung an die Architektur werden bestimmte Entwurfsmuster genutzt oder auch nicht.
Das Grundgerüst bildet aber - wie bereits in Kapitel 5.6.3.2 erwähnt - das Beobach-
ter-Muster zwischen Model und View, das in einer MVC-Architektur praktisch immer
vorzufinden ist. Zusätzlich werden in der Regel noch zwei weitere Muster bei der MVC-
Architektur benutzt: Das Strategie-Muster (engl. strategy pattern ) dient dem Zusam-
menspiel zwischen View und Controller. Das Kompositum-Muster (engl. composite
pattern ) kann für den Aufbau einer View aus den Elementen der grafischen Ober-
fläche eingesetzt werden.
Das Beobachter-Muster im MVC
Das Beobachter-Muster wird im MVC-Architekturmuster verwendet, um eine möglichst
lose Kopplung vom Model zur View herzustellen. In Kapitel 4.11 ist der prinzipielle
Aufbau des Musters dargestellt. Hier ein an die Situation im MVC angepasstes Klas-
sendiagramm dieses Musters:
«use»
«interface»
IModel
*
«interface»
IView
+ anmelden(IView)
+ abmelden(IView)
+ gibDaten()
+ aktualisieren()
Model
View
+ aktualisieren()
- benachrichtigen()
+ gibDaten()
Bild 5-41 Das Beobachter-Muster zwischen Model und View im Pull-Betrieb des Active Model
Hierbei nimmt das Model die Rolle des Beobachtbaren ein und die View die Rolle des
Beobachters. Wird eine View für ein bestimmtes Model instanziiert, so muss sie sich
beim Model anmelden. Dies geschieht, indem die View beim Model die Methode
anmelden() aufruft und eine Referenz auf sich selbst als Parameter übergibt. Dabei
übergibt sich die View als ein Objekt vom Typ IView . Somit kann das Model nur die
Methoden, die im Interface IView deklariert sind, bei der View aufrufen. Da das Mo-
del dieses Interface vorgibt, ist das Model nicht von ihm abhängig. Der Beobachter,
sprich die View, darf das Interface nicht abändern. Das Model hat also keinerlei Infor-
mationen über den Aufbau der konkreten View und ist somit auch nicht abhängig von
ihr. Alle registrierten Views werden in einer Liste im Model abgespeichert.
Wird nun das Model vom Controller verändert, ruft das Model die Methode benach-
richtigen() zur Information der Views auf. In dieser Methode wird für jede View, die
sich als Beobachter registriert hat, die Methode aktualisieren() aufgerufen. Die-
 
Search WWH ::




Custom Search