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 ?
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 :
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. Car1Factory
et Car2Factory
. Ces usines injectent les dépendances nécessaires via leurs constructeurs. 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é. 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 :
switch case
dans les méthodes d'usineCe 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!