Factory Pattern
Problemática
Factory Patter quizá es el patrón mas usado en el desarrollo de software, su uso es básico para tener un control de instanciación dentro de nuestro código y facilitar el cambio de implementaciones.
Con el uso de interfaces en el desarrollo de software, se crea al menos una implementación de tal interface. Imaginemos un proyecto mediano o grande, si no se tiene control de los lugares en los cuales se realiza la instanciación de las implementaciones, cuando se desee cambiar una implementación el trabajo será arduo y peligroso.
Por lo anterior es necesario centralizar la creación de instancias, de manera que podamos crear instancias desde un Factory, y si deseamos cambiar una implementación solo creamos la nueva implementación y cambiamos la instanciación en el Factory.
Implementación
En el diagrama anterior podemos observar que Factory crea las instancias, de manera que solo dentro de las clases Factory debemos de tener "new".
1. Crea una interface que defina el contrato a cumplir la implementación.
2. Crea una implementación de la interface definida anteriormente.
3. En clases que usen una instancia del tipo definido por la interface usa este tipo y no el tipo de la implementación.
Ejemplo
void dibuja();
}
class Triangulo implements Figura {
@Override
public void dibuja() {
System.out.println("Soy un triangulo");
}
}
class Circulo implements Figura {
@Override
public void dibuja() {
System.out.println("Soy un circulo");
}
}
class FactoryFormas {
public static Figura getFigura(final String tipoFigura) {
Figura figura = null;
if (tipoFigura.equals("triangulo")) {
figura = new Triangulo();
} else {
figura = new Circulo();
}
return figura;
}
}
class MuestraFiguras {
public void main(final String[] args) {
Figura triangulo = FactoryFormas.getFigura("triangulo");
Figura circulo = FactoryFormas.getFigura("circulo");
triangulo.dibuja();
circulo.dibuja();
}
}
Referencias
http://www.oodesign.com/factory-pattern.htmlhttp://www.tutorialspoint.com/design_pattern/factory_pattern.htm
No hay comentarios:
Publicar un comentario