Proyecto final

Páginas: 13 (3189 palabras) Publicado: 5 de junio de 2013
Factory Method o Método de Fabrica
En diseño de software, el patrón de diseño Factory Method consiste en utilizar una clase constructora (al estilo del Abstract Factory) abstracta con unos cuantos métodos definidos y otro(s) abstracto(s): el dedicado a la construcción de objetos de un subtipo de un tipo determinado. Es una simplificación del Abstract Factory, en la que la clase abstracta tienemétodos concretos que usan algunos de los abstractos; según usemos una u otra hija de esta clase abstracta, tendremos uno u otro comportamiento.

Estructura

Las clases principales en este patrón son el creador y el producto. El creador necesita crear instancias de productos, pero el tipo concreto de producto no debe ser forzado en las subclases del creador, porque entonces las posiblessubclases del creador deben poder especificar subclases del producto para utilizar.
La solución para esto es hacer un método abstracto (el método de la fábrica) que se define en el creador. Este método abstracto se define para que devuelva un producto. Las subclases del creador pueden sobrescribir este método para devolver subclases apropiadas del producto.
Ejemplo de código (en Java)

// Definimosla clase abstracta constructora
public abstract class Creator{
// Operación que realiza
public Product anOperation() {

return factoryMethod();
}

// Definimos método abstracto
protected abstract Product factoryMethod();
}
Ahora definimos el creador concreto.
public class ConcreteCreator extends Creator{
protected Product factoryMethod() {
return new ConcreteProduct();
}
}
Ydefinimos el producto y su implementación concreta.
public interface Product{
public void operacion();
}

public class ConcreteProduct implements Product{
public void operacion(){
System.out.println("Una operación de este producto");
}
}
Y un ejemplo de uso :
public static void main(String args[]){
Creator aCreator;
aCreator = new ConcreteCreator();
Product producto =aCreator.anOperation();
producto.operacion();


Abstract Factory (Fábrica Abstracta) es un patrón de diseño para el desarrollo de software.

Fabricas abstractas.
Contexto y problema

Contexto: Debemos crear diferentes objetos, todos pertenecientes a la misma familia. Por ejemplo: las librerías para crear interfaces gráficas suelen utilizar este patrón y cada familia sería un sistema operativo distinto. Asípues, el usuario declara un Botón, pero de forma más interna lo que está creando es un BotónWindows o un BotónLinux, por ejemplo.
El problema que intenta solucionar este patrón es el de crear diferentes familias de objetos.
El patrón Abstract Factory está aconsejado cuando se prevé la inclusión de nuevas familias de productos, pero puede resultar contraproducente cuando se añaden nuevosproductos o cambian los existentes, puesto que afectaría a todas las familias creadas.
Estático
La estructura típica del patrón Abstract Factory es la siguiente:

• Cliente: La clase que llamará a la factoría adecuada ya que necesita crear uno de los objetos que provee la factoría, es decir, Cliente lo que quiere es obtener una instancia de alguno de los productos (ProductoA, ProductoB).

•AbstractFactory: Es de definición de la interfaces de las factorías. Debe de proveer un método para la obtención de cada objeto que pueda crear. ("crearProductoA()" y "crearProductoB()")

• Factorías Concretas: Estas son las diferentes familias de productos. Provee de la instancia concreta de la que se encarga de crear. De esta forma podemos tener una factoría que cree los elementos gráficos paraWindows y otra que los cree para Linux, pudiendo poner fácilmente (creando una nueva) otra que los cree para MacOS, por ejemplo.

• Producto abstracto: Definición de las interfaces para la familia de productos genéricos. En el diagrama son "ProductoA" y "ProductoB". En un ejemplo de interfaces gráficas podrían ser todos los elementos: Botón, Ventana, Cuadro de Texto, Combo... El cliente trabajará...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • proyecto final
  • proyecto final
  • proyecto final
  • PROYECTO FINAL
  • Proyecto Final
  • Proyecto Final
  • proyecto final
  • Proyecto Final

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS