Fábrica Abstracta (Abstract Factor y )
Una de las
operaciones más comunes al programar con objetos es, lógicamente, la creación
de los objetos. Sin embargo, esta operación es en sí misma un foco de
acoplamiento. Cuando desde un fragmento de código C invocamos la creación de
unobjeto de la clase A estamos acoplando ese código con el de la clase A. Si
posteriormente deseamos cambiar el objeto declase A por otro de otra clase que
cumpla su misma interfaz no podremos hacerlo sin cambiar el código C.
Para evitar
este problema se suele delegar la creación de los objetos a otro objeto que se
denomina fábrica (factory). De esta manera desde el código C no creamos el
objeto A directamente, sino que se lo pedimos a la clase fábrica.
Evidentemente,para evitar el acoplamiento de la fábrica con el código C, la
propia fábrica deberá obtenerse por parámetros.
Además, el
patrón Fábrica permite ocultar los constructores de las clases que crea, de
manera que solo se puedan crear los objetos a través de la fábrica, impidiendo
de esta forma su creación de una forma no prevista.
Existen otros
Patrones de Diseño para la creación de objetos. En particular se puede destacar
al patrón Constructor (Builder ) y al patrón Método de Construcción (Factor y
Method ). El patrón Constructor es similar al patrón
Fábrica
Abstracta salvo en que una Fábrica suele crear colecciones de objetos, mientras
que un constructor solo crea un tipo de objetos. Por otro lado, el patrón
Método de Construcción se diferencia del patrón Fábrica en que son los propios
objetos derivados los que crean, mediante un método de construcción, los
objetos concretos que se necesitan en cada momento.
Otra
alternativa al uso del patrón Fabrica Abstracta consiste en el uso de
inyectores de dependencias. Son objetos que se programan o se configuran para
que devuelvan familias concretas de productos cuando cualquier clase de la
aplicación le solicita cierto tipo de producto. Estas técnicas se apoyan en las
características de introspección de Java y pueden ser complementarias al uso de
Fábricas Abstractas.
No hay comentarios:
Publicar un comentario