2009-07-08 6 views

Respuesta

5

El patrón Enabler es realmente solo una variación de un patrón Observer. Configura observadores en partes interesantes de un sistema, creando Condiciones. Los habilitadores pueden observar las condiciones y habilitar/deshabilitar widgets.

E.g. cuando carga una Ventana, crea Condiciones que miran cosas como si una lista o cuadro combinado (o un modelo debajo de la lista o cuadro combinado) tiene algo seleccionado. Puedes llamarlo algo así como "algoSelecciónCondición". A continuación, conecta los habilitadores a los widgets que están vinculados a una o más condiciones (que pueden y/o pueden estar juntas ... aunque, por lo general, solo las desea y las combina en la práctica).

Normalmente los implemento al tener una fábrica de widgets de tal manera que uno de los parámetros que ingresa es un conjunto de condiciones nombradas que, cuando se combinan, habilitan/deshabilitan un widget. P.ej.

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

Los conditionNames buscará condiciones que están disponibles en una cierta clase de HashMap, creat una CompositeCondition (que AND booleano toda la observada valores de las condiciones) y crea un Enabler que escucha el CompositeCondition y le dice al widget creado que se habilite/deshabilite en base a la condición subyacente.

Suena un poco complicado, pero una vez que crea la infraestructura subyacente, un par de líneas de código conectan sus condiciones, y luego la interfaz de usuario siempre está sincronizada con las condiciones.

No creo que alguna vez haya escrito oficialmente el patrón de Enabler, o simplemente le señalaría una URL.

HTH,

Ken

+0

Esta parece ser la respuesta definitiva! (FWIW, si alguna vez lo escribes correctamente, me encantaría esa URL. :-)) Gracias también por un libro muy útil e interesante. –

Cuestiones relacionadas