Frage

In seinem Buch Extreme Programming Applied , Ken Auer erwähnt beiläufig ein Muster Enabler. Kent Beck erwähnt es auch (zumindest in einer E-Mail vom 8. November 2004), aber ich habe nicht in der Lage gewesen, alle Details in den üblichen Stellen zu finden (Google, das Wiki unter c2.com usw.)

Wo kann ich mehr erfahren?

War es hilfreich?

Lösung

Das Enabler Muster ist wirklich nur eine Variation eines Beobachter-Muster. Sie richten Beobachter auf interessante Teile eines Systems, die Schaffung von Bedingungen. Enablers können dann die Bedingungen beobachten und aktivieren / deaktivieren Widgets.

z. Wenn Sie ein Fenster laden, erstellen Sie Bedingungen, die Sachen sehen wie, ob eine Liste oder ein Kombinationsfeld (oder ein Modell unterhalb der Liste oder Combo-Box) ausgewählt etwas. Man kann es so etwas wie „somethingSelectedCondition“ nennen. Sie haken dann Enabler auf Widgets up, die eine oder mehrere Bedingungen gebunden sind (die Sie und / oder zusammen ... doch in der Regel möchten Sie gerade und sie zusammen in der Praxis).

ich sie in der Regel implementieren, indem ein Widget Fabrik aufweist, so dass einer der Parameter in Ihnen passieren ist ein Array von benannten Bedingungen, die, wenn sie zusammen anded, aktivieren / deaktivieren ein Widget. Z.

widgetFactory.createButton (String button, String methodActionName, String [] conditionNames)

Die conditionNames wird auf Bedingungen suchen, die in einer gewissen Art von HashMap verfügbar sind, creat eine CompositeCondition (die ANDs alle beobachteten Boolesche Werte der Bedingungen) und ein Enabler erzeugt, die an die CompositeCondition hört und sagt das erstellte Widget aktivieren / deaktivieren auf der Basis der zugrunde liegenden Erkrankung.

Es klingt ein wenig kompliziert, aber wenn man die zugrunde liegende Infrastruktur, ein paar Zeilen Code verdrahten Ihre Bedingungen zu schaffen, und dann die Benutzeroberfläche ist immer synchron mit den Bedingungen.

Ich glaube nicht, dass ich jemals offiziell das Enabler-Muster schreibe, oder ich würde dich nur auf eine URL verweisen.

HTH,

Ken

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top