Prototype (patrón de diseño)

Prototype (patrón de diseño)

Prototype (patrón de diseño)

Contenido

Propósito

Prototype UML.svg

El patrón de diseño Prototype (Prototipo), tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente.

Motivación

Este patrón es motivo donde en ciertos escenarios es preciso abstraer la lógica que decide qué tipos de objetos utilizará una aplicación, de la lógica que luego usarán esos objetos en su ejecución. Los motivos de esta separación pueden ser variados, por ejemplo, puede ser que la aplicación deba basarse en alguna configuración o parámetro en tiempo de ejecución para decidir el tipo de objetos que se debe crear.

Solución

Este patrón propone la creación de distintas variantes del objeto que nuestra aplicación necesite, en el momento y contexto adecuado. Toda la lógica necesaria para la decisión sobre el tipo de objetos que usará la aplicación en su ejecución debería localizarse aquí. Luego, el código que utiliza estos objetos solicitará una copia del objeto que necesite. En este contexto, una copia significa otra instancia del objeto. El único requisito que debe cumplir este objeto es suministrar la prestación de clonarse. Cada uno de los objetos prototipo debe implementar el método Clone().

Implementación

Esta es una solución en el lenguaje C.Sharp de DotNet:

using System;
// "Prototype"
abstract class Prototype {
 
	private string _id;
 
	public Prototype( string id ) {
		_id = id;
	}
 
	public string ID {
		get{ return _id; }
	}
 
	abstract public Prototype Clone();
}
 
class ClsConcreta1 : Prototype {
	public ClsConcreta1 ( string id ) : base ( id ) {}
 
	override public Prototype Clone() {
		// Shallow copy
		return (Prototype)this.MemberwiseClone();
	}
}
 
class Prototype[[Client {
 
---- '''ClsConcreta1 y luego la clono
		ClsConcreta1 p1 = new ClsConcreta'''
1 ("Clone-I");
		ClsConcreta1 c1 = (ClsConcreta1) p1.Clone();
		Console.WriteLine( "Clonación: {0}", c1.ID );		
	}
}

Esta es otra implementación distinta en el lenguaje Java:

// Los productos deben implementar esta interface
public interface Producto extends Cloneable {
    Object clone();
    // Aqui van todas las operaciones comunes a los productos que genera la factoria
}
 
// Un ejemplo basico de producto
public class UnProducto implements Producto {
    private int atributo;
 
    UnProducto(int atributo) {
        this.atributo = atributo;
    }
 
    public Object clone() {
        return new UnProducto(this.atributo);
    }
 
    public String toString() {
        return ((Integer)atributo).toString();
    }
}
 
// La clase encargada de generar objetos a partir de los prototipos
public class FactoriaPrototipo {
    private HashMap mapaObjetos;
    private String nombrePorDefecto;
 
    public FactoriaPrototipo() {
        mapaObjetos = new HashMap();
        // Se incluyen al mapa todos los productos prototipo
        mapaObjetos.put("producto 1", new UnProducto(1));
    }
 
    public Object create() {
        return create(nombrePorDefecto);
    }
 
    public Object create(String nombre) {
        nombrePorDefecto = nombre;
        UnProducto objeto = (UnProducto)mapaObjetos.get(nombre);
        return objeto != null ? objeto.clone() : null;
    }
}
 
public class PruebaFactoria {
    static public void main(String[] args) {
        FactoriaPrototipo factoria = new FactoriaPrototipo();
        Producto producto = (Producto) factoria.create("producto 1");
        System.out.println ("Este es el objeto creado: " + producto);
    }
}
Obtenido de "Prototype (patr%C3%B3n de dise%C3%B1o)"

Wikimedia foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Mira otros diccionarios:

  • Prototype (patrón de diseño) — Propósito El patrón de diseño Prototype (Prototipo), tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente …   Enciclopedia Universal

  • Patrón de diseño — Saltar a navegación, búsqueda Los patrones de diseño (design patterns) son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de… …   Wikipedia Español

  • Command (patrón de diseño) — En programación orientada a objetos, Command es un patrón de diseño. Contenido 1 Intención 2 Propósito 3 Motivo 4 Aplicaciones …   Wikipedia Español

  • AT&T Mobility — Esta página o sección está siendo traducida del idioma inglés a partir del artículo AT T Mobility, razón por la cual puede haber lagunas de contenidos, errores sintácticos o escritos sin traducir. Puedes colaborar con Wikipedia …   Wikipedia Español

  • Anexo:Locomotoras GE — La siguiente es una lista de las locomotoras producidas por GE Transportation Systems. Todas fueron/son construidas en Erie, Pennsylvania, en Estados Unidos. Muchas (excepto las eléctricas, las de maniobras, la AC6000CW y la serie Evolution) son… …   Wikipedia Español

  • Trastorno límite de la personalidad — «Borderline» redirige aquí. Para otras acepciones, véase Borderline (desambiguación). Trastorno límite de la personalidad Clasificación y recursos externos …   Wikipedia Español

  • Stephen Jay Gould — Stephen Jay Gould …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”