1. #1

    Registriert seit
    01.12.2011
    Beiträge
    135
    Thanked 75 Times in 53 Posts

    Standard ...............

    Hallo Leute,

    ich befinde mich gerade an einer Ausarbeitung über das Design Pattern "Observer". Hierbei stehen mir noch einige Fragen im Raum, auf die mir die richtigen Antworten fehlen.

    Implementierung:
    - Welche Fallen können auftauchen / welche Hinweise sind zu beachten?
    - Gibt es sprachenspezifische Probleme?

    Anwendung:
    - Beispiel des Patterns in echten Systemen? In welchen Bereichen wird das Pattern eingesetzt?
    Möchte hierbei mindestens zwei nennen. Einerseits liegt mir die graphische Darstellung besonders vor Augen. Ich finde hierzu allerdings keine geeignete Quelle.
    Zusätzlich habe ich auch etwas von AWT Event-Handling, Swing und Java Beans Event Notifications gelesen. Diese Dinge sind mir allerdings zu abweichend vom eigentlichen Thema, so dass ich da nicht ausführlich drauf eingehen möchte.
    Geändert von Gast78236 (24.10.2014 um 12:33 Uhr)

  2. #2
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.195
    Thanked 1.596 Times in 725 Posts
    Blog Entries
    2

    Standard AW: Observer Pattern

    Ich verstehe zwar nicht ganz was du willst, aber möglicherweise kann ich dir helfen.

    Bei AngularJS gibt es auch einen sogenannten Observer. Wird meist dazu eingesetzt, um HTML-Attribute zu überwachen.



    $scope.$observe( 'contenteditable', function (newValue, oldValue) {

    console.log( 'neuer Wert:, newValue );
    console.log( 'alter Wert:, oldValue );

    } );




    Siehe Docs.
    Geändert von patlux (11.10.2014 um 18:53 Uhr)

  3. The Following User Says Thank You to patlux For This Useful Post:

    TomatenKetchup (12.10.2014)

  4. #3

    Registriert seit
    01.12.2011
    Beiträge
    135
    Thanked 75 Times in 53 Posts

    Standard AW: Observer Pattern

    Heyho,

    danke für deine Hilfestellung, Ruby.

    Ich habe mich nun an dem Buch "Elements of Reusable Objected-Oriented Software" orientiert. Dieses wurde von der "Gang-of-four" verfasst und beschreibt zahlreiche, nützliche Entwurfsmuster (Singleton, Proxy, Iterator etc.). Eventuell werde ich deinen Tipp auch noch mit einbeziehen.

    [HIDE=12]"Das erste und vielleicht auch bestbekannteste Beispiel vom Observer-Pattern ist in Smalltalk Model/View/Controller (MVC) zu finden, dem Framework der Benutzerschnittstelle in der Smalltalk-Umgebung [KP88].
    Smalltalk, ET++ [WGM88] und die THINK-Klassenbibliothek [Sym93b] bieten einen generellen Abhängigkeitsmechanismus, in dem die Subjekt und Observer-Schnittstelle in der Basisklasse für alle anderen Klassen im System dient.
    Andere Benutzerschnittstellen-Werkzeuge die das Pattern einbeziehen sind InterViews [LVC89], das Andrew Toolkit [P+88] und Unidraw [Vl90].
    "
    Vgl. Elements of Reusable Objected-Oriented Software

    Bei der Implementierung habe ich mich jetzt nur auf die Techniken (Push-, Pull- und Hybrid-Modell) beschränkt und bin nicht weiter auf Probleme eingegangen.[/HIDE]

    Lieben Gruß
    Geändert von Gast78236 (24.10.2014 um 12:33 Uhr)

  5. #4
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Observer Pattern

    Dieses wurde von der "Gang-of-four" verfasst und beschreibt zahlreiche, nützliche Entwurfsmuster (Singleton, Proxy, Iterator etc.).
    Singleton raus aus der Klammer!
    Wird heutzutage als Anti-Pattern angesehen. Lieber die Finger davon lassen. Stattdessen zur Dependency Injection greifen.

  6. #5

    Registriert seit
    01.12.2011
    Beiträge
    135
    Thanked 75 Times in 53 Posts

    Standard AW: Observer Pattern

    Hey Nuebel,

    danke für die Korrektur. Verrückt: unser Prof hat seine Vorführpräsentation genau über dieses Thema gehalten.. Kannst du das irgendwie begründen/erläutern, weshalb Singleton ein Anti-Pattern oder kein gutes Beispiel ist?

    Lieben Gruß
    Geändert von Gast78236 (24.10.2014 um 12:33 Uhr)

  7. #6
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Observer Pattern

    Das was ein Singleton ausmacht, ist auch das, was sie schlecht (ja, kursiv) macht:
    - Es gibt nur eine Instanz
    - Der Zugriff auf diese Instanz ist nahezu überall möglich

    Punkt 1 ist nicht mal immer sichergestellt, gerade wenn es um Nebenläufigkeit oder verteilte Systeme geht. In Java zum Beispiel ist static nur "je ClassLoader" statisch. Das heißt, mit einem anderen, möglicherweise selbst implementierten, ClassLoader kannst du eine Klasse mehrmals laden. Damit ist die Kernidee des Singletons, es gäbe nur eine Instanz, zerstört. Aber verschiedene ClassLoader sind schon praktisch (aber auch etwas tricky). Du kannst zur Laufzeit Klassen austauschen, ja sogar ein kleines PlugIn-System ist möglich.

    Punkt 2 ist hoffentlich selbsterklärend, vgl. Diskussionen um "warum globale Variablen böse sind".

    Ein weiterer Nachteil von Singletons ist die schlechte Testbarkeit. Aus dem Versuch "mal eben ein Singleton zu mocken" wird schnell lange Frickelei mit 3 Tassen Kaffee. Trotzdem haben Singletons ihre Existenzberechtigung, auch wenn die sinnvollen Anwendungsmöglichkeiten in der heutigen Programmierung kleiner geworden ist.

    Wenn du irgendwann einmal glaubst, hier wäre ein Singleton sinnvoll, weil du dem Paradebeispiel einer "zentralen Konfiguration" verfallen bist, dann kannst du dich trotzdem gegen Singletons entscheiden, indem du das Objekt anderen Klassen, die es benötigen, im Konstruktor übergibst oder du einen Dependency Injection Container nutzt.

Ähnliche Themen

  1. VB.Net Suche Pattern für JSON String
    Von exception im Forum .Net
    Antworten: 4
    Letzter Beitrag: 12.02.2014, 01:28
  2. [S] Pattern
    Von Mentos im Forum Hochsprachen
    Antworten: 2
    Letzter Beitrag: 08.02.2013, 01:42
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.