2009-07-08 5 views

Répondre

5

Le motif Enabler est en fait simplement une variation d'un motif Observer. Vous configurez des observateurs sur des parties intéressantes d'un système, en créant des conditions. Les activateurs peuvent alors observer les conditions et activer/désactiver les widgets.

E.g. Lorsque vous chargez une fenêtre, vous créez des conditions qui regardent des choses comme si une liste ou une liste déroulante (ou un modèle sous la liste ou la liste déroulante) a quelque chose sélectionné. Vous pouvez l'appeler quelque chose comme "somethingSelectedCondition". Vous pouvez ensuite connecter des activateurs à des widgets liés à une ou plusieurs conditions (que vous pouvez et/ou ensemble ... bien que vous souhaitiez simplement les utiliser ensemble). Je les implémente généralement en ayant une fabrique de widgets telle que l'un des paramètres que vous transmettez est un tableau de conditions nommées qui, lorsqu'elles sont combinées, activent/désactivent un widget. Par exemple.

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

Les conditionNames recherchera les conditions qui sont disponibles dans une certaine sorte de HashMap, CREAT un CompositeCondition (qui ANDs tous les booléens observé valeurs des conditions) et crée un Enabler qui écoute CompositeCondition et indique au widget créé d'activer/désactiver en fonction de la condition sous-jacente.

Cela semble un peu compliqué, mais une fois que vous avez créé l'infrastructure sous-jacente, quelques lignes de code vous permettent de gérer vos conditions, puis l'interface utilisateur est toujours synchronisée avec les conditions.

Je ne pense pas que j'ai jamais écrit officiellement le modèle Enabler, ou je voudrais juste vous diriger vers une URL.

HTH,

Ken

+0

Cela semble être la réponse définitive! (FWIW, si jamais vous le faites correctement, j'adorerais cette URL. :-)) Merci aussi pour un livre très utile et intéressant. –

Questions connexes