Estamos trabajando en algo propio llamado KODOTI. Click para unirte
Se viene KODOTI. Únete

SOLID #5: Dependency Inversion Principle con C#

En esta publicación veremos como implementar Dependency Inversion Principle usando el lenguaje C#.

Rodríguez Patiño, Eduardo
4,937 lecturas
Rodríguez Patiño, Eduardo
Hemos migrado hace poco nuestras publicaciones del blog antiguo. Si crees que esta se encuentra incompleta o sin coherencia deja un comentario para restaurarla manualmente.

Esto lo he hablado varias veces, en pocas palabras es hacer uso de inyección de dependencia para evitar de esta manera trabajar con las instancias dentro de nuestro código.

class Mailchimp
{
    public void Send()
    {

    }
}

class EmailService
{
    public void SendAnEmail(Mailchimp mailProvider)
    {
        mailProvider.Send();
    }
}

Todo funciona bien, podemos enviar correos usando nuestro provedor Mailchimp, pero al día siguiente nos dicen que ya no usesmos Mailchimp, sino trabajemos ahora con SendGrid.

class Mailchimp
{
    public void Send()
    {

    }
}

class Sendgrid
{
    public void Send()
    {

    }
}

class EmailService
{
    public void SendAnEmailUsingSendGrid(Sendgrid mailProvider)
    {
    mailProvider.Send();
    }

    public void SendAnEmailUsingMailchimp(Mailchimp mailProvider)
    {
    mailProvider.Send();
    }
}

Esto funciona pero no es óptimo y vamos a romper los principios anteriores. En este caso debemos trabajar con una interfaz de esta manera no nos interesa quien es el proveedor solo nos interesa que el comportamiento sea el mismo.

interface IEmailProvider
{
    void Send();
}

class Mailchimp : IEmailProvider
{
    public void Send()
    {

    }
}

class Sendgrid : IEmailProvider
{
    public void Send()
    {

    }
}

class EmailService
{
    private readonly IEmailProvider _emailProvider;

    public EmailService(
    IEmailProvider emailProvider
    )
    {
    _emailProvider = emailProvider;
    }

    public void Send()
    {
        _emailProvider.Send();
    }
}
¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín