Maison >développement back-end >C++ >Comment puis-je gérer efficacement les dépendances excessives dans une méthode d'usine paramétrée ?

Comment puis-je gérer efficacement les dépendances excessives dans une méthode d'usine paramétrée ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 01:32:09922parcourir

How Can I Effectively Manage Excessive Dependencies in a Parameterized Factory Method?

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

Vous êtes familier avec les méthodes d'usine et le modèle d'injection de dépendances (DI), mais avez besoin de conseils pour le cas spécifique d'un grand nombre de dépendances dans une méthode d'usine paramétrée.

Problème : Dépendance excessive à l'égard des usines paramétrées

Dans votre classe d'usine, le constructeur nécessite six dépendances, et chaque instance de voiture créée par l'usine a un ensemble de dépendances différent. Cela rend l'usine difficile à gérer et introduit des instructions CreateCar dans les méthodes switch case.

Méthodes alternatives

Vous avez proposé deux alternatives : injecter l'instance de la voiture directement dans le constructeur d'usine ou utiliser un localisateur de services. Cependant, ces solutions présentent chacune leurs inconvénients. L'injection d'instances de voiture viole les principes de conception d'usine et l'utilisation de localisateurs de services est généralement déconseillée.

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

Au lieu d'utiliser des instructions switch case dans les usines, envisagez d'adopter le modèle Strategy pour l'injection de dépendances. Ce modèle vous permet de créer plusieurs implémentations d'usine, chacune dédiée à la création d'un type spécifique de voiture.

Mise en œuvre :

  1. Définir l'interface : Introduire les interfaces pour ICarFactory et ICarStrategy. ICarFactory représente une usine utilisée pour créer des instances de voiture, tandis que ICarStrategy représente une collection d'usines.
  2. Créer une usine : implémentez des classes d'usine concrètes pour chaque type de voiture, telles que Car1Factory et Car2Factory. Ces usines injectent les dépendances nécessaires via leurs constructeurs.
  3. Stratégie d'implémentation : créez une classe CarStrategy qui implémente ICarStrategy et contient un tableau d'instances ICarFactory. La méthode CarStrategy dans CreateCar parcourt les usines pour trouver une usine capable de créer le type de voiture demandé.
  4. Utilisation : Injectez CarStrategy instances dans votre code. Vous pouvez ensuite utiliser la méthode CreateCar pour instancier l'instance de voiture sans spécifier directement les dépendances.

Avantages du mode Stratégie :

  • Éliminer les instructions switch case dans les méthodes d'usine
  • Permet l'ajout facile de nouvelles usines automobiles
  • Facilite les dépendances DI pour chaque usine
  • Emplacement centralisé pour prendre en charge l'enregistrement de l'usine

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:
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