miércoles, 4 de julio de 2018

Capítulo 33: Design Patterns - Pluggable Selector - TDD By Example

Para ejecutar un comportamiento diferente para diferentes instancias se puede almacenar el nombre del método y ejecutarlo dinámicamente.

Crear subclases en un mecanismo pesado para capturar pequeñas variaciones. Por ejemplo, si se tiene una clase «Report» se podría tener varios tipos de informes

Una alternativa es tener una sola clase con instrucción «switch». Dependiendo del valor del campo, se puede invocar un método de forma dinámica. El nombre del método aparecería en:
  • La creación de la instancia.
  • La instrucción «switch».
  • La definición del propio método.
Cada vez que surge la necesidad de aplicar un nuevo comportamiento hay que definir el nuevo método y modificar la instrucción «switch».

La solución aplicando el patrón «Pluggable Selector» pasa por invocar el método dinámicamente:

Ahora hay una dependencia entre los métodos y el nombre de los métodos aunque elimina la instrucción «switch».

Uno de los principales problemas de aplicar este patrón es la trazabilidad del código. Sólo se debería usar el patrón «Pluggable Selector» cuando se de una situación bastante sencilla en la que un conjunto de subclases tengan un único método.

No hay comentarios:

Publicar un comentario