Pregunta

En su libro Programación Extrema Aplicada , Ken Auer casualmente menciona un patrón Enabler. Kent Beck también menciona que (por lo menos en un correo electrónico de fecha 08 noviembre de 2004), pero no he podido encontrar ningún detalle en los lugares habituales (Google, la wiki en c2.com, etc.)

¿Dónde puedo encontrar más información?

¿Fue útil?

Solución

El patrón Enabler es en realidad una variación de un patrón Observer. Se configura observadores en partes interesantes de un sistema, la creación de condiciones. Facilitadores luego pueden observar las condiciones y activar / desactivar los widgets.

por ejemplo. cuando se carga una ventana, se crean condiciones que ven cosas como si una lista o cuadro combinado (o un modelo por debajo de la lista o cuadro combinado) tiene algo seleccionado. Se le puede llamar algo así como "somethingSelectedCondition". A continuación, conectas facilitadores a los widgets que están vinculados a una o más condiciones (que se puede y / o junto ... pero en general lo que desea es y juntos en la práctica).

Por lo general ponerlas en práctica por tener una fábrica widget de tal manera que uno de los parámetros que se pasa en una gran variedad de condiciones con nombre que, cuando se asocian con un AND, activar / desactivar un widget. Por ejemplo.

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 todos los valores booleanos observadas de las condiciones) y crea un habilitador, que escucha el CompositeCondition y le dice al creado widget para activar / desactivar la función de la condición subyacente.

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

No creo que he escrito oficialmente el patrón Enabler, o te acabo señalaría a una URL.

HTH,

Ken

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top