Les 3 types de Dependency Injection

Récemment j’ai écrit un article autour du concept de « Dependency Injection et Inversion of Control « avec une concentration sur l’utilisation d’un Container IoC.

Cette fois-ci, je veux donner un aperçu  des 3 différents possibilités, qu’on peut utiliser pour adapter le patron de conception Dependency Injection dans son codage :

  1. Constructor Injection
  2. Setter Injection
  3. Interface Injection

Constructor Injection

Passer une dépendance à la classe dépendant en utilisant le Constructor

namespace TypesDi
{
    class Program
    {
        static void Main(string[] args)
        {
            var coach = new Coach();

            var driver = new Driver(coach);
        }
    }

    public class Driver
    {
        private readonly IDriveable vehicle;

        public Driver(IDriveable vehicle)
        {
            this.vehicle = vehicle;
        }
    }

    public interface IDriveable {}

    public class Coach : IDriveable {}
}

Setter Injection

  • Créer un setter dans la classe dépendant
  • Utilisez un setter pour mettre la dépendance en place
namespace TypesDi
{
    class Program
    {
        static void Main(string[] args)
        {
            var coach = new Coach();

            var driver = new Driver();

            driver.MyVehicle = coach;

        }
    }

    public class Driver
    {
        public IDriveable MyVehicle { get; set; }
    }

    public interface IDriveable {}

    public class Coach : IDriveable {}
}

Interface Injection

  • La classe dépendante mets en œuvre un interface
  • L’injector utilise l’interface pour mettre la dépendance en place
namespace TypesDi
{
    class Program
    {
        static void Main(string[] args)
        {
            var coach = new Coach();

            var driver = new Driver();

            ((IDriveable)driver).Inject(coach);
        }
    }

    public class Driver : IDriveable
    {
        private IDriveable vehicle;

        public void Inject(IDriveable vehicle)
        {
            this.vehicle = vehicle;
        }
    }

    public interface IDriveable
    {
        void Inject(IDriveable vehicle);
    }

    public class Coach : IDriveable
    {
        public void Inject(IDriveable vehicle)
        {
            throw new NotImplementedException();
        }
    }
}

 

Une réflexion au sujet de « Les 3 types de Dependency Injection »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *