Código Prototype
	
	public interface Prototipo extends Cloneable {
		Object clone();
		...
	}
	 

	public class PrototipoConcreto1 implements Prototipo {
		private atributo;
	 
		public PrototipoConcreto1(atributo) {
			this.atributo = atributo;
		}
	 
		public Object clone() {
			return new PrototipoConcreto1(this.atributo);
		}
	 
		public String toString() {
			return (atributo).toString();
		}
	}
	 

	public class FactoriaPrototipos {
		private HashMap mapaObjetos;
		private String nombrePorDefecto;
	 
		public FactoriaPrototipos() {
			mapaObjetos = new HashMap();
			// Se incluyen en el mapa todos los productos prototipo
			mapaObjetos.put("producto 1", new PrototipoConcreto1y(1));
		}
	 
		public Object create() {
			return create(nombrePorDefecto);
		}
	 
		public Object create(String nombre) {
			nombrePorDefecto = nombre;
			Prototipo objeto = (Prototipo)mapaObjetos.get(nombre);
			return objeto != null ? objeto.clone() : null;
		}
	}