SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
© Logica 2008. All rights reserved
Varianten des “Observer Pattern”
Das Observer Pattern ist ein GoF Entwurfmuster um Änderungen an einem
Objekt in abhängigen Ansichten zu aktualisieren. Das Pattern bietet eine
Lösung zur Nachrichtenverteilung innerhalb einer Applikation für eine
beliebige Anzahl an Empfängern.
Dieser Vortrag stellt verschiedene Alternativen einer Observer Pattern
Implementierung vor und zeigt die Vor- und Nachteile auf. Am Ende steht
eine Observer-Komponente für eine Windows Forms Applikationen.
Agenda
• Observer Pattern nach GoF
– Einleitung
– Demo einer Implementierung
– Vorteile / Nachteile
• Event-Basierter Observer
– Einleitung
No. 223 April 2009 Varianten des “Observer Pattern”
– Einleitung
– Demo einer Implementierung
– Vorteile / Nachteile
• Observer-Komponente
– Einleitung
– Demo einer Implementierung
– Vorteile / Nachteile
Observer Pattern
• Subjekt = Beobachtetes Objekt
• Konkreter Beobachter = Konkrete Implementierung eines Beobachters
• Beobachter = Schnittstelle für alle Beobachter Implementierungen
• Beobachter.aktualisiere = Aktualisieren der konkreten Beobachter
• Subjekt.benachrichtige = Aufrufen der Aktualisierung aller registrierten Beobachter
No. 323 April 2009 Varianten des “Observer Pattern”
Observer Pattern (Demo)
• Demo
– Fachobjekt „PersonSubjekt“
– Schnittstelle „IBeobachter“
– Beobachter „DatumBeobachter“
– Beobachter „EigenschaftenBeobachter“– Beobachter „EigenschaftenBeobachter“
No. 423 April 2009 Varianten des “Observer Pattern”
Observer Pattern (Vorteile / Nachteile)
• Pro: Es funktioniert ☺
• Pro: Saubere Architektur
• Contra: Erweiterbarkeit: Viele Schnittstellen oder Methoden
– Attach / Detach für jede Schnittstelle im Subjekt– Attach / Detach für jede Schnittstelle im Subjekt
– Leerimplementierung für nicht benutzte Methoden
• Contra: Verwaltungscode im Fachobjekt
No. 523 April 2009 Varianten des “Observer Pattern”
Event Basierter Observer
• Subjekt mit Events
• Attach / Detach über Event und EventHandler
• EventHandler mit EventArgs als Schnittstelle
No. 623 April 2009 Varianten des “Observer Pattern”
Event Basierter Observer (Demo)
• Demo
– Fachobjekt „Subjekt“ + Schnittstelle „ISubjekt“
– EventArgs „SubjektEventArgs“ (statt „IBeobachter“)
– Beobachter „DatumBeobachter“
– Beobachter „EigenschaftenBeobachter“– Beobachter „EigenschaftenBeobachter“
No. 723 April 2009 Varianten des “Observer Pattern”
Event Basierter Observer (Vorteile / Nachteile)
• Pro: Es funktioniert ☺
• Pro: Einfache Erweiterbarkeit durch Events
• Pro/Contra: Kein Verwaltungscode im Fachobjekt
• Contra: Sehr viele EventHandler in großen Objektbäumen (Vater-Kind)
• Contra: Keine Visual Studio Unterstützung
• Contra: Auswahl eines Objektes nicht unterstützt
No. 823 April 2009 Varianten des “Observer Pattern”
Observer Komponente
• Anforderung
– Event Basierter Observer
– Windows Forms Komponente
• Lösung
– Observer Komponente, Subjekt als Assoziation– Observer Komponente, Subjekt als Assoziation
– Statische Liste mit allen Instanzen der Observer Komponente
– SubjektAktualisiert Event
– Statische RaiseSubjektAktualisiert Methode (Auslösen des Events aller Instanzen)
– Subjekt als Parameter der RaiseSubjektAktualisiert Methode
No. 923 April 2009 Varianten des “Observer Pattern”
Observer Komponente (Demo)
• Observer Komponente „SubjektObserver“
– Singleton Liste mit allen Instanzen
◦ New() erweitern
◦ Dispose() erweitern
– Event „SubjektAktualisiert“
– Statische Methode „RaiseSubjektAktualisiert“– Statische Methode „RaiseSubjektAktualisiert“
– Fachobjekt „Subjekt“ + Schnittstelle „ISubjekt“
– EventArgs „SubjektEventArgs“
– Beobachter „DatumBeobachter“
– Beobachter „EigenschaftenBeobachter“
No. 1023 April 2009 Varianten des “Observer Pattern”
Observer Komponente (Vorteile / Nachteile)
• Pro: Es funktioniert ☺
• Pro: Visual Studio Unterstützung
• Contra: Fachobjekt ist abhängig von Controller
– Pro: *Beobachter rufen die Raise* Methoden auf (Validierung etc.)– Pro: *Beobachter rufen die Raise* Methoden auf (Validierung etc.)
• Pro/Contra: Immer genau ein Subjekt im Fokus
No. 1123 April 2009 Varianten des “Observer Pattern”
Fragen
Es gibt keine dummen Fragen,
es gibt nur dumme Antworten!
E-Mail/MSN: thomas.mentzel@logica.com
Blog: http://thomas.mentzel.name
Twitter: http://twitter.com/ThomasMentzel
No. 1223 April 2009 Varianten des “Observer Pattern”

Weitere ähnliche Inhalte

Ähnlich wie Varianten des "Observer Pattern"

Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...e-dialog GmbH
 
Unit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 AnwendungUnit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 AnwendungRalf Eggert
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenChristian Baranowski
 
UI Debugging - Cocoaheads Dresden (Deutsch)
UI Debugging - Cocoaheads Dresden (Deutsch)UI Debugging - Cocoaheads Dresden (Deutsch)
UI Debugging - Cocoaheads Dresden (Deutsch)Pit Garbe
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagHendrik Lösch
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJSSebastian Springer
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Daniel Fesenmeyer
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile ServicesSascha Dittmann
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101gueste4be40
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Die unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles AnforderungsmanagementDie unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles AnforderungsmanagementThomas Moedl
 

Ähnlich wie Varianten des "Observer Pattern" (20)

Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
 
Azure WorkshopPart1 Intro
Azure WorkshopPart1   IntroAzure WorkshopPart1   Intro
Azure WorkshopPart1 Intro
 
Unit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 AnwendungUnit Testing einer Zend-Framework 2 Anwendung
Unit Testing einer Zend-Framework 2 Anwendung
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML Grundlagen
 
UI Debugging - Cocoaheads Dresden (Deutsch)
UI Debugging - Cocoaheads Dresden (Deutsch)UI Debugging - Cocoaheads Dresden (Deutsch)
UI Debugging - Cocoaheads Dresden (Deutsch)
 
WPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF RundumschlagWPF Dos n Don'ts - der WPF Rundumschlag
WPF Dos n Don'ts - der WPF Rundumschlag
 
Bit wisem 2015-wieners-sitzung-09_Software-Entwicklung
Bit wisem 2015-wieners-sitzung-09_Software-EntwicklungBit wisem 2015-wieners-sitzung-09_Software-Entwicklung
Bit wisem 2015-wieners-sitzung-09_Software-Entwicklung
 
MVVM mit WPF
MVVM mit WPFMVVM mit WPF
MVVM mit WPF
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)Eclipse Ditto Vorstellung (German)
Eclipse Ditto Vorstellung (German)
 
dotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Servicesdotnet Cologne 2013 - Windows Azure Mobile Services
dotnet Cologne 2013 - Windows Azure Mobile Services
 
AngularJs
AngularJsAngularJs
AngularJs
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
Windows 8.1 UI für Entwickler
Windows 8.1 UI für EntwicklerWindows 8.1 UI für Entwickler
Windows 8.1 UI für Entwickler
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Android Testing
Android Testing Android Testing
Android Testing
 
CDI
CDICDI
CDI
 
Die unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles AnforderungsmanagementDie unendliche User Story - agiles Anforderungsmanagement
Die unendliche User Story - agiles Anforderungsmanagement
 

Mehr von Thomas Mentzel

Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - KurzpräsentationSitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - KurzpräsentationThomas Mentzel
 
An Introduction to Clean Code Developer
An Introduction to Clean Code DeveloperAn Introduction to Clean Code Developer
An Introduction to Clean Code DeveloperThomas Mentzel
 
O/R Mapping Einführung
O/R Mapping EinführungO/R Mapping Einführung
O/R Mapping EinführungThomas Mentzel
 
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04Thomas Mentzel
 
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03Thomas Mentzel
 
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02Thomas Mentzel
 
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1Thomas Mentzel
 
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - AgendaWord 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - AgendaThomas Mentzel
 
Productivity- and Self Management
Productivity- and Self ManagementProductivity- and Self Management
Productivity- and Self ManagementThomas Mentzel
 
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010Thomas Mentzel
 
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinterThomas Mentzel
 

Mehr von Thomas Mentzel (13)

Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - KurzpräsentationSitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - Kurzpräsentation
 
An Introduction to Clean Code Developer
An Introduction to Clean Code DeveloperAn Introduction to Clean Code Developer
An Introduction to Clean Code Developer
 
O/R Mapping Einführung
O/R Mapping EinführungO/R Mapping Einführung
O/R Mapping Einführung
 
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04
 
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03
 
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02
 
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1
 
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - AgendaWord 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - Agenda
 
Productivity- and Self Management
Productivity- and Self ManagementProductivity- and Self Management
Productivity- and Self Management
 
Logging mit log4net
Logging mit log4netLogging mit log4net
Logging mit log4net
 
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010
 
AOP mit PostSharp
AOP mit PostSharpAOP mit PostSharp
AOP mit PostSharp
 
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter
 

Varianten des "Observer Pattern"

  • 1. © Logica 2008. All rights reserved Varianten des “Observer Pattern” Das Observer Pattern ist ein GoF Entwurfmuster um Änderungen an einem Objekt in abhängigen Ansichten zu aktualisieren. Das Pattern bietet eine Lösung zur Nachrichtenverteilung innerhalb einer Applikation für eine beliebige Anzahl an Empfängern. Dieser Vortrag stellt verschiedene Alternativen einer Observer Pattern Implementierung vor und zeigt die Vor- und Nachteile auf. Am Ende steht eine Observer-Komponente für eine Windows Forms Applikationen.
  • 2. Agenda • Observer Pattern nach GoF – Einleitung – Demo einer Implementierung – Vorteile / Nachteile • Event-Basierter Observer – Einleitung No. 223 April 2009 Varianten des “Observer Pattern” – Einleitung – Demo einer Implementierung – Vorteile / Nachteile • Observer-Komponente – Einleitung – Demo einer Implementierung – Vorteile / Nachteile
  • 3. Observer Pattern • Subjekt = Beobachtetes Objekt • Konkreter Beobachter = Konkrete Implementierung eines Beobachters • Beobachter = Schnittstelle für alle Beobachter Implementierungen • Beobachter.aktualisiere = Aktualisieren der konkreten Beobachter • Subjekt.benachrichtige = Aufrufen der Aktualisierung aller registrierten Beobachter No. 323 April 2009 Varianten des “Observer Pattern”
  • 4. Observer Pattern (Demo) • Demo – Fachobjekt „PersonSubjekt“ – Schnittstelle „IBeobachter“ – Beobachter „DatumBeobachter“ – Beobachter „EigenschaftenBeobachter“– Beobachter „EigenschaftenBeobachter“ No. 423 April 2009 Varianten des “Observer Pattern”
  • 5. Observer Pattern (Vorteile / Nachteile) • Pro: Es funktioniert ☺ • Pro: Saubere Architektur • Contra: Erweiterbarkeit: Viele Schnittstellen oder Methoden – Attach / Detach für jede Schnittstelle im Subjekt– Attach / Detach für jede Schnittstelle im Subjekt – Leerimplementierung für nicht benutzte Methoden • Contra: Verwaltungscode im Fachobjekt No. 523 April 2009 Varianten des “Observer Pattern”
  • 6. Event Basierter Observer • Subjekt mit Events • Attach / Detach über Event und EventHandler • EventHandler mit EventArgs als Schnittstelle No. 623 April 2009 Varianten des “Observer Pattern”
  • 7. Event Basierter Observer (Demo) • Demo – Fachobjekt „Subjekt“ + Schnittstelle „ISubjekt“ – EventArgs „SubjektEventArgs“ (statt „IBeobachter“) – Beobachter „DatumBeobachter“ – Beobachter „EigenschaftenBeobachter“– Beobachter „EigenschaftenBeobachter“ No. 723 April 2009 Varianten des “Observer Pattern”
  • 8. Event Basierter Observer (Vorteile / Nachteile) • Pro: Es funktioniert ☺ • Pro: Einfache Erweiterbarkeit durch Events • Pro/Contra: Kein Verwaltungscode im Fachobjekt • Contra: Sehr viele EventHandler in großen Objektbäumen (Vater-Kind) • Contra: Keine Visual Studio Unterstützung • Contra: Auswahl eines Objektes nicht unterstützt No. 823 April 2009 Varianten des “Observer Pattern”
  • 9. Observer Komponente • Anforderung – Event Basierter Observer – Windows Forms Komponente • Lösung – Observer Komponente, Subjekt als Assoziation– Observer Komponente, Subjekt als Assoziation – Statische Liste mit allen Instanzen der Observer Komponente – SubjektAktualisiert Event – Statische RaiseSubjektAktualisiert Methode (Auslösen des Events aller Instanzen) – Subjekt als Parameter der RaiseSubjektAktualisiert Methode No. 923 April 2009 Varianten des “Observer Pattern”
  • 10. Observer Komponente (Demo) • Observer Komponente „SubjektObserver“ – Singleton Liste mit allen Instanzen ◦ New() erweitern ◦ Dispose() erweitern – Event „SubjektAktualisiert“ – Statische Methode „RaiseSubjektAktualisiert“– Statische Methode „RaiseSubjektAktualisiert“ – Fachobjekt „Subjekt“ + Schnittstelle „ISubjekt“ – EventArgs „SubjektEventArgs“ – Beobachter „DatumBeobachter“ – Beobachter „EigenschaftenBeobachter“ No. 1023 April 2009 Varianten des “Observer Pattern”
  • 11. Observer Komponente (Vorteile / Nachteile) • Pro: Es funktioniert ☺ • Pro: Visual Studio Unterstützung • Contra: Fachobjekt ist abhängig von Controller – Pro: *Beobachter rufen die Raise* Methoden auf (Validierung etc.)– Pro: *Beobachter rufen die Raise* Methoden auf (Validierung etc.) • Pro/Contra: Immer genau ein Subjekt im Fokus No. 1123 April 2009 Varianten des “Observer Pattern”
  • 12. Fragen Es gibt keine dummen Fragen, es gibt nur dumme Antworten! E-Mail/MSN: thomas.mentzel@logica.com Blog: http://thomas.mentzel.name Twitter: http://twitter.com/ThomasMentzel No. 1223 April 2009 Varianten des “Observer Pattern”