Caso practico por que usar una Interfaz
a causa del post anterior Cannot serialize member 'Objects' of type 'System.Collections.Generic.IList`1.... varios me preguntaron por que usar Ilist y no List directamente.
Bueno aquí un pequeño y muy cotidiano ejemplo, que sirve para entender las gracias de las interfaces.
Supongamos que tenemos 2 clases una llamada "auto" y otra "camion" y ambas tienen un numero de patente. y en algún reporte o pantalla solo tenemos que listar solo la Patente seria de la siguiente forma.
y después en un objeto Dao, para rescatar los datos desde algún origen, ya sea base de datos, webservice, etc.:
y por ultimo simplemente lo llamamos y nos retornara una lista de Ipatentable, el cual puede contener cualquier objeto que implemente esta interfaz.
de la siguiente forma:
En resumen una interfaz es un como un contrato, en este ejemplo no nos importa si el objeto es un cambion o auto, solo nos interesa que tenga una patente y para eso los objetos deben implementar esta interfaz.
Para este ejemplo igual se pueden usar herencia , con una clase Abtracta por ejemplo
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com
Bueno aquí un pequeño y muy cotidiano ejemplo, que sirve para entender las gracias de las interfaces.
Supongamos que tenemos 2 clases una llamada "auto" y otra "camion" y ambas tienen un numero de patente. y en algún reporte o pantalla solo tenemos que listar solo la Patente seria de la siguiente forma.
public interface IPatentable {
String Patente { set; get; }
}
public class Auto:IPatentable {
public String Patente { set; get; }
public Int32 CantidadDePuertas { set; get; }
}
public class Camion:IPatentable {
public String Patente { set; get; }
public Int64 Peso { set; get; }
}
y después en un objeto Dao, para rescatar los datos desde algún origen, ya sea base de datos, webservice, etc.:
public IList<IPatentable> GetPAtentes() {
var auto1 = new Auto { Patente = "yk99998", CantidadDePuertas = 5 };
var auto2 = new Auto { Patente = "cd1543", CantidadDePuertas = 3 };
var camion1 = new Camion() { Patente = "AD7777", Peso = 5000 };
var lista = new List<IPatentable>();
lista.Add(auto1);
lista.Add(auto2);
lista.Add(camion1);
return lista;
}
y por ultimo simplemente lo llamamos y nos retornara una lista de Ipatentable, el cual puede contener cualquier objeto que implemente esta interfaz.
de la siguiente forma:
var listPatentes = new patenteDAo().GetPAtentes();
foreach (var foo in listPatentes)
Console.Write(foo.Patente);
En resumen una interfaz es un como un contrato, en este ejemplo no nos importa si el objeto es un cambion o auto, solo nos interesa que tenga una patente y para eso los objetos deben implementar esta interfaz.
Para este ejemplo igual se pueden usar herencia , con una clase Abtracta por ejemplo
--
Atte.
Victor Hugo Saavedra
http://vhspiceros.blogspot.com
Comentarios
Publicar un comentario