Está en la página 1de 6

ESCUELA ACADEMICA PROFESIONAL DE INGENIERIA

DE SISTEMAS E INFORMATICA

ASIGNATURA:
Patrones de Diseño de Software
TEMA:
Diseño del Patrón Prototype
CICLO:
V
ALUMNO:
Farro Cárdenas Arnaldo Andree 0201814039
DOCENTE:
Ms. ING. YIM ISAIAS APESTEGUI FLORENTINO

Nuevo Chimbote – Perú


2020
Diseño del Patrón Prototype
Código Java
public abstract class Documento implements Cloneable {
protected String contenido = new String();
public Documento duplica(){
Documento resultado;
try {
resultado = (Documento)this.clone();
}
catch(CloneNotSupportedException exception){
return null;
}
return resultado;
}
public void rellenar(String informacion){
contenido = informacion;
}
public abstract void imprime();
public abstract void visualiza();
}
public class OrdenDePedido extends Documento {
@Override
public void visualiza(){
System.out.println("Muestra la Orden de Pedido: "+contenido);
}
@Override
public void imprime(){
System.out.println("Imprime la Orden de Pedido: "+contenido);
}
}
public class SolicitudMatriculacion extends Documento {
@Override
public void visualiza(){
System.out.println( "Muestra la Solicitud de Matriculación: "+contenido);
}
@Override
public void imprime(){
System.out.println( "Imprime la Solicitud de Matriculación: "+contenido);
}
}
public class CertificadoCesion extends Documento {
@Override
public void visualiza(){
System.out.println( "Muestra el Certificado de Cesión: " + contenido);
}
@Override
public void imprime(){
System.out.println( "Imprime el Certificado de Cesión: " + contenido);
}
}
import java.util.List;
public abstract class Documentacion {
protected List <Documento> documentos;
public List <Documento> getDocumentos(){
return documentos;
}
}
import java.util.ArrayList;
public class DocumentacionEnBlanco extends Documentacion{
private static DocumentacionEnBlanco una_instance = null;
private DocumentacionEnBlanco(){
documentos = new ArrayList <Documento>();
}
public static DocumentacionEnBlanco Instancia(){
if (una_instance == null) {
una_instance = new DocumentacionEnBlanco();
}
return una_instance;
}
public void incluye(Documento doc){documentos.add(doc);}
public void excluye(Documento doc){documentos.remove(doc);}
}

import java.util.*;
public class DocumentacionCliente extends Documentacion {
public DocumentacionCliente(String informacion){
documentos = new ArrayList<Documento>();
DocumentacionEnBlanco documentacionEnBlanco =
DocumentacionEnBlanco.Instancia();
List<Documento> documentosEnBlanco = documentacionEnBlanco.getDocumentos();
for (Documento doc: documentosEnBlanco) {
Documento copiaDocumento = doc.duplica();
copiaDocumento.rellenar(informacion);
documentos.add(copiaDocumento);
}
}
public void visualiza(){
for (Documento doc: documentos) {
doc.visualiza();
}
}
public void imprime(){
for (Documento doc: documentos) {
doc.imprime();
}
}
}
public class Usuario {
public static void main(String[] args) {
DocumentacionEnBlanco documentacionEnBlanco =
DocumentacionEnBlanco.Instancia();

documentacionEnBlanco.incluye(new OrdenDePedido());
documentacionEnBlanco.incluye(new CertificadoCesion());
documentacionEnBlanco.incluye(new SolicitudMatriculacion());

DocumentacionCliente documentacionCliente1 = new


DocumentacionCliente("Maluma");
DocumentacionCliente documentacionCliente2 = new
DocumentacionCliente("Ozuna");

System.out.println("-----------------------------------------------");
documentacionCliente1.visualiza();
System.out.println("-----------------------------------------------");
documentacionCliente1.imprime();
System.out.println("-----------------------------------------------");
documentacionCliente2.visualiza();
System.out.println("-----------------------------------------------");
documentacionCliente2.imprime();
System.out.println("-----------------------------------------------");
}

Ejecución
-----------------------------------------------
Muestra la Orden de Pedido: Maluma
Muestra el Certificado de Cesión: Maluma
Muestra la Solicitud de Matriculación: Maluma
-----------------------------------------------
Imprime la Orden de Pedido: Maluma
Imprime el Certificado de Cesión: Maluma
Imprime la Solicitud de Matriculación: Maluma
-----------------------------------------------
Muestra la Orden de Pedido: Ozuna
Muestra el Certificado de Cesión: Ozuna
Muestra la Solicitud de Matriculación: Ozuna
-----------------------------------------------
Imprime la Orden de Pedido: Ozuna
Imprime el Certificado de Cesión: Ozuna
Imprime la Solicitud de Matriculación: Ozuna
-----------------------------------------------
BUILD SUCCESSFUL (total time: 2 seconds)

También podría gustarte