You are on page 1of 4

UNACH

ESQUEMA DE DESCRIPCION DE PATRON DE DISEÑO EN


CONSTRUCCIÓN DE SOFTWARE

Nombre del Patrón Patrón Factory


Clasificación Aplicado a Clase X Aplicado a Instancia de Clase
De Creación De Estructura De Comportamiento De Concurrencia
Otro Nombre de la Clasificación
Propósito
Define una interfaz para crear un objeto, pero dejando en manos de las subclases la decisión de
qué clase concreta instanciar
Permite que una clase delegue en sus subclases la creación de objetos

Nombre alterno del Patrón Factory


Escenario

Aplicabilidad

Una clase no puede prever la clase de objetos que tiene que crear

Una clase quiere que sus subclases decidan qué objetos crean

Las clases delegan responsabilidades a una de entre varias subclases auxiliares, y queremos
localizar en qué subclase concreta se ha delegado
Estructura

Participantes

Product (Documento): define la interfaz de los objetos que crea el método factoría

ConcreteProduct (MiDocumento): implementa la interfaz de Product z Creator (Aplicacion ):


declara el método factoría que devuelve un objeto de tipo Product. Puede definir una
implementación por defecto de dicho método, que devuelva un objeto de algún producto
concreto ConcreteProduct. puede llamar al método factoría para crear un objeto de tipo Product

ConcreteCreator (MiAplicacion ): sobrescribe el método factoría para devolver un objeto de


algún ConcreteProduct

Colaboraciones

Define una interfaz para crear un objeto, pero dejando en manos de las subclases la decisión de
qué clase concreta instanciar

Permite que una clase delegue en sus subclases la creación de objetos

También conocido como virtual constructor

Consecuencias

 Elimina la necesidad de ligar clases específicas de una aplicación al código, que trata con
la interfaz Product y funciona con cualquier clase ConcreteProduct

 El cliente debe crear clases hijas de Creator para cada tipo de producto concreto

 Proporciona enganches para las subclases.

 La creación de objetos con métodos factoría es más flexible

 Las subclases pueden dar una versión extendida del código padre

 Conecta jerarquías de clases paralelas (delegación)


Implementación

Existen dos variantes principales:

 Creator es una clase abstracta y no implementa el método factoría

 Creator es concreta y proporciona una implementación por defecto

 Métodos factoría parametrizados: crean varios tipos de producto, identificados por un


parámetro del método

Código de Ejemplo

Este código permite crear pizzas, entonces dependiendo del tipo de pizza que se solicite al
método crearPizza, este método crear una pizza suprema o una pizza vegetariana.

function PizzaFactory(){
this.crearPizza = function(type){
if (type === "PizzaSuprema") {
return PizzaSuprema();
}else if (type === "PizzaVegetariana"){
return PizzaVegetariana();
};
}

function Pizza(ing,precio){
this.Ingredientes =ing;
this.Precio = precio;
}

function PizzaSuprema(){
return new Pizza(["jamon","queso","salsa","carne"],
150);
}

function PizzaVegetariana(){
return new Pizza(["tomate","queso","salsa"],
150);
}
}

var factory = new PizzaFactory();


var pizza = factory.crearPizza("PizzaSuprema");

console.log(pizza);

Usos Conocidos

Podemos utilizar este patrón cuando definamos una clase a partir de la que se crearán objetos pero
sin saber de qué tipo son, siendo otras subclases las encargadas de decidirlo.

Patrones Relacionados
El patrón Factory se puede combinar con otros muchos, no obstante es muy frecuente utilizarlo
junto a patrones como Singleton, Builder y Prototype, es decir, para obtener una instancia única
que utilizaremos para construir objetos.
También se le ha relacionado con el patrón Cache Management, utilizado para implementar
cache de objetos.

You might also like