Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En estos casos, en lugar de que sea el propio objeto quien se encargue de todos los aspectos realativos a la creación, se crea otro objeto que
lo haga. De esta manera, se libera al objeto que va a ser creado de aquellas responsabilidades que no le corresponden pero que son
necesarias para su creación, manteniendo su independencia.
El siguiente es un ejemplo de la utilización de una factoría para la creación de objetos. Se pueden crear figuras geométricas y calcular su
área. Las figuras estarían definidas por una interfaz. Las figuras posibles son círculos y cuadrados.
Se va a utilizar una factoría para crear las figuras, puesto que no conocemos de antemano a qué clase pertenece el objetoque tenemos que
instanciar. El uso de unafactoría permite separar la lógica de negocio, igual para todos los casos, de la lógica de instanciación de los objetos.
De este forma el código queda más claro.
public interface Figura {
public double getArea();
}
Figura figura =
FiguraFactory.getFigura(tipo, lado);
El ejemplo anterior se corresponde con el patrón de diseño Factory Method, que se refiere a la utiliación de un método cuyo propósito
principal es la creación de objetos.
Existe otro patrón de diseño denominado Abstract Factory, que proporciona una interfaz para crear familias de objetos que dependen entre
sí, sin especificar sus clases concretas.
El siguiente es un ejemplo de una factoría abstracta sacado de la Wikipedia, en el que se crea un botón que puede pertenecer a dos familias
distintas de componentes gráficos y la aplicación no sabe hasta el momento de la ejecución a qué familia pertenecerá este botón:
interface GUIFactory {
public Button createButton();
}
interface Button {
public void paint();
}
class Application {
public Application(GUIFactory factory){
Button button = factory.createButton();
button.paint();
}
}