Sie sind auf Seite 1von 4

4/24/2014 ENI Training - Libro online

http://www.eni-training.com/client_net/mediabook.aspx?idR=65600 1/4
using System;
using System.Collections.Generic;

public abstract class Documentacion
{
protected IList<string> contenido =
new List<string>();

public abstract void agregaDocumento(string documento);
public abstract void imprime();
}


using System;

public class DocumentacionHtml : Documentacion
{
public override void agregaDocumento(string documento)
{
if (document.StartsWith("<HTML>"))
contenido.Add(documento);
}

public override void imprime()
{
Console.WriteLine("Documentacin HTML");
foreach (string s in contenido)
Console.WriteLine(s);
}
}


using System;

public class DocumentacionPdf : Documentacion
{
public override void agregaDocumento(string documento)
{
if (documento.StartsWith("<PDF>"))
contenido.Add(documento);
}

public override void imprime()
{
Console.WriteLine("Documentacin PDF");
foreach (string s in contenido)
Console.WriteLine(s);
}
}
Ejemplo en C#
Presentamos a continuacin un ejemplo de uso del patrn escrito en C#. El cdigo C# correspondiente a
la clase abstracta Documentacion y sus subclases aparece a continuacin. Por motivos de simplicidad,
los documentos son cadenas de caracteres para la documentacin en formato HTML y PDF. El
mtodo imprime muestra las distintas cadenas de caracteres que representan los documentos.
El cdigo fuente de las clases que generan la documentacin aparece a continuacin.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=65600 2/4
using System;

public abstract class ConstructorDocumentacionVehiculo
{
protected Documentacion documentacion;

public abstract void construyeSolicitudPedido(string
nombreCliente);

public abstract void construyeSolicitudMatriculacion
(string nombreSolicitante);

public Documentacion resultado()
{
return documentacion;
}
}


using System;

public class ConstructorDocumentacionVehiculoHtml :
ConstructorDocumentacionVehiculo
{
public ConstructorDocumentacionVehiculoHtml()
{
documentacion = new DocumentacionHtml();
}

public override void construyeSolicitudPedido(string
nombreCliente)
{
string documento;
documento = "<HTML>Solicitud de pedido Cliente: " +
nombreCliente + "</HTML>";
documentacion.agregaDocumento(documento);
}

public override void construyeSolicitudMatriculacion
(string nombreSolicitante)
{
string documento;
documento =
"<HTML>Solicitud de matriculacin Solicitante: " +
nombreSolicitante + "</HTML>";
documentacion.agregaDocumento(documento);
}
}


using System;

public class ConstructorDocumentacionVehiculoPdf :
ConstructorDocumentacionVehiculo
{
public ConstructorDocumentacionVehiculoPdf()
{
documentacion = new DocumentacionPdf();
}

4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=65600 3/4
public override void construyeSolicitudPedido(string
nombreCliente)
{
string documento;
documento = "<PDF>Solicitud de pedido Cliente: " +
nombreCliente + "</PDF>";
documentacion.agregaDocumento(documento);
}

public override void construyeSolicitudMatriculacion
(string nombreSolicitante)
{
string documento;
documento =
"<PDF>Solicitud de matriculacin Solicitante: " +
nombreSolicitante + "</PDF>";
documentacion.agregaDocumento(documento);
}
}
using System;

public class Vendedor
{
protected ConstructorDocumentacionVehiculo constructor;

public Vendedor(ConstructorDocumentacionVehiculo constructor)
{
this.constructor = constructor;
}

public Documentacion construye(string nombreCliente)
{
constructor.construyeSolicitudPedido(nombreCliente);
constructor.construyeSolicitudMatriculacion
(nombreCliente);
Documentacion documentacion = constructor.resultado();
return documentacion;
}
}
using System;

public class ClienteVehiculo
{
static void Main(string[] args)
{
ConstructorDocumentacionVehiculo constructor;
Console.WriteLine("Desea generar " +
"documentacin HTML (1) o PDF (2):");
La clase Vendedor se describe a continuacin. Su constructor recibe como parmetro una instancia
deConstructorDocumentacionVehiculo. Observe que el mtodo construye toma como parmetro la
informacin del cliente, aqu limitada al nombre del cliente.
Por ltimo, se proporciona el cdigo C# del cliente del constructor, a saber la
clase ClienteVehiculoque constituye el programa principal. El inicio de este programa solicita al
usuario el constructor que debe utilizar, y se lo proporciona a continuacin al vendedor.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=65600 4/4
string seleccion = Console.ReadLine();
if (seleccion == "1")
{
constructor = new ConstructorDocumentacionVehiculoHtml();
}
else
{
constructor = new ConstructorDocumentacionVehiculoPdf();
}
Vendedor vendedor = new Vendedor(constructor);
Documentacion documentacion = vendedor.construye("Martn");
documentacion.imprime();
}
}
Desea generar documentacin HTML (1) o PDF (2):2
Documentacin PDF
<PDF>Solicitud de pedido Cliente: Martn</PDF>
<PDF>Solicitud de matriculacin Solicitante: Martn</PDF>
Desea generar documentacin HTML (1) o PDF (2):2
Documentacin HTML
<HTML>Solicitud de pedido Cliente: Martn</HTML>
<HTML>Solicitud de matriculacin Solicitante: Martn</HTML>
Un ejemplo de ejecucin para una documentacin PDF sera:
Conforme a la solicitud del cliente, la documentacin y sus documentos se han creado en formato PDF. Si
el cliente solicitara su documentacin en HTML, la salida sera la siguiente:

Das könnte Ihnen auch gefallen