El otro día en el trabajo se nos presento un problema, teníamos una librería que se encargaba de convertir un XML de un cliente a un formato interno nuestro, esta librería era compartida por varias de nuestras aplicaciones, resulta que el cliente hace un cambio de especificaciones por lo que necesitamos acceder a unos datos históricos a fin de poder seguir convirtiendo su XML a nuestro formato, pero el modo y de donde obtener esos datos cambia según en el contexto en el que se este ejecutando la DLL.

La solución, añadirle un parámetro al método de conversión, un Interface que sea el que encargado de obtener esos datos, luego en cada contexto le pasamos la clase que nos interese que tiene que implementar el Interface.

Un Ejemplo en PseudoCodigo :)

//El interface que usaremos para obtener los datos
public interface IObtenerLosDatos
{
    XmlDocument DameLosDatos();
}

//El metodo que convierte el XML
public XmlDocument ConvierteXml(XmlDocument xmlDoc,
                                IObtenerLosDatos BuscardorDatos)
{
    XmlDocument xDatosHistoricos =
        BuscardorDatos.DameLosDatos();
    //Codigos
    //Codigos
    //Codidos
    return new XmlDocument();
}

//Una clase para obtener el historico desde el disco
public class DatosDesdeDisco: IObtenerLosDatos
{
    public XmlDocument DameLosDatos()
    {
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.Load(@"C:\Historico.xml");
        return xmlDocument();
    }
}

//Una clase para obtener el historico desde la base de datos
public class DatosDesdeSQL: IObtenerLosDatos
{
    public XmlDocument DameLosDatos()
    {
        XmlDocument xmlDocument =
            SqlHelper.Instance.GetXmlDocument();
        return xmlDocument;
    }
}

//Convertimos el XML
static void Convierte(XmlDocument xmlCliente)
{
    Program p = new Program();

    //Convertimos el XMl con el Historico desde Disco
    DatosDesdeDisco datosDesdeDisco = new DatosDesdeDisco();
    XmlDocument xmlConvertido1 =
        p.ConvierteXml(xmlCliente, datosDesdeDisco);

    //Convertimos el XMl con el Historico desde SQL
    DatosDesdeSQL datosDesdeSQL = new DatosDesdeSQL();
    XmlDocument xmlConvertido2 =
        p.ConvierteXml(xmlCliente, datosDesdeSQL);
}
Categories: , ,

Leave a Reply


*

PUBLICIDAD

EMAIL





posts recientes

Instala la ultima versión...

Posted on ene - 23 - 2012

0 Comment

primer Vistazo al framework...

Posted on ene - 12 - 2012

0 Comment

Changelog de MongoMapper.NET

Posted on ene - 5 - 2012

0 Comment

Sponsors

  • Etooltech
  • Dingus Services
  • Etooltech
  • Dingus Services