Aprende más, haciendo pequeños proyectos Ir a KODOTI
Capacítate con nosotros KODOTI

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
Publicado:
6,711 lecturas
Rodríguez Patiño, Eduardo

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();
    }
}

Estudia con nosotros

🚀 Mejora tus oportunidades laborales


¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín