Domanda

Nel suo libro Extreme Programming Applied , Ken Auer menzioni casualmente un modello Enabler. Kent Beck menziona anche (per lo meno in una e-mail in data 8 Novembre 2004), ma non sono stato in grado di trovare tutti i dettagli nei soliti posti (Google, il wiki a c2.com, ecc.)

Dove posso saperne di più?

È stato utile?

Soluzione

Il modello Enabler è in realtà solo una variante di un pattern Observer. Si imposta osservatori a parti interessanti di un sistema, creando le condizioni. Abilitatori possono poi osservare le condizioni e abilitare / disabilitare widgets.

es. quando si carica una finestra, si creano condizioni che guardano roba come se una casella di riepilogo o combinata (o un modello sotto l'elenco o casella combinata) ha qualcosa selezionato. Si può chiamare qualcosa come "somethingSelectedCondition". È quindi collegare fino abilitatori di widget che sono legati a una o più condizioni (che è possibile e / o insieme ... anche se di solito si vuole solo e insieme in pratica).

Io di solito li implementano avendo un widget di fabbrica in modo tale che uno dei parametri si passa in è una serie di condizioni di nome che, quando anded insieme, attivare / disattivare un widget. Per es.

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

I conditionNames cercherà Condizioni che sono disponibili in una sorta di HashMap, creat un CompositeCondition (che AND tutti i valori booleani osservati delle condizioni) e crea un Enabler che ascolta il CompositeCondition e dice al creato widget per abilitare / disabilitare basato sulla condizione di base.

Sembra un po 'complicato, ma una volta che si crea l'infrastruttura sottostante, un paio di righe di codice filo le vostre condizioni, e quindi l'interfaccia utente è sempre in sintonia con le condizioni.

Non credo che io abbia mai scritto ufficialmente il modello Enabler, o che avevo appena si punta a un URL.

HTH,

Ken

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top