Maison > développement back-end > C++ > Comment l'injection de dépendances peut-elle résoudre le problème de nombreuses dépendances dans une méthode d'usine ?

Comment l'injection de dépendances peut-elle résoudre le problème de nombreuses dépendances dans une méthode d'usine ?

Barbara Streisand
Libérer: 2025-01-21 01:21:38
original
703 Les gens l'ont consulté

How Can Dependency Injection Solve the Problem of Many Dependencies in a Factory Method?

Méthodes d'usine utilisant l'injection de dépendances et l'inversion de contrôle

Question :

Lorsque les méthodes d'usine créent différents objets, elles doivent gérer un grand nombre de dépendances transmises.

Problème :

Utiliser des instructions switch case dans les usines est une mauvaise odeur de code. Cela introduit des dépendances dans l’usine elle-même et rend son extension difficile.

Solution : modèle de stratégie d'injection de dépendances

Interface :

Définir les interfaces d'usine automobile et de stratégie automobile pour dissocier la création automobile de la mise en œuvre concrète.

<code>public interface ICarFactory
{
    ICar CreateCar();
    bool AppliesTo(Type type);
}

public interface ICarStrategy
{
    ICar CreateCar(Type type);
}</code>
Copier après la connexion

Usine :

Mettre en place des usines distinctes pour chaque type de voiture. Les dépendances de ces usines seront injectées par le conteneur DI.

<code>public class Car1Factory : ICarFactory
{
    private readonly IDep1 dep1;
    private readonly IDep2 dep2;
    private readonly IDep3 dep3;

    // ... (构造函数和工厂方法)
}</code>
Copier après la connexion

Stratégie :

La classe de stratégie automobile utilisera l'interface d'usine pour créer la voiture en fonction du type d'entrée.

<code>public class CarStrategy : ICarStrategy
{
    private readonly ICarFactory[] carFactories;

    // ... (构造函数和策略方法)
}</code>
Copier après la connexion

Utilisation :

Dans la racine de la composition, injectez les dépendances appropriées dans la classe d'usine et créez la stratégie automobile. Utilisez cette stratégie pour créer le type de voiture souhaité.

<code>var strategy = new CarStrategy(new ICarFactory[] {
    new Car1Factory(dep1, dep2, dep3),
    // ...
});

var car1 = strategy.CreateCar(typeof(Car1));</code>
Copier après la connexion

Avantages :

  • Dissocier la création de voiture de l'injection de dépendances.
  • Permet d'ajouter et de supprimer facilement des types de voitures sans changer de stratégie.
  • Testabilité et flexibilité améliorées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal