Le modèle de méthode d'usine est un modèle de conception de création de classe couramment utilisé. L'esprit principal de ce modèle est d'encapsuler les parties changeantes de la classe, d'extraire les parties personnalisées et modifiables dans des classes indépendantes et d'y parvenir grâce à l'injection de dépendances. Le but est de découpler, de réutiliser et de faciliter la maintenance et l'expansion ultérieures.
Introduction au modèle :
La signification du modèle Factory Method est de définir une usine qui crée des objets de produit. Interface reporte la création réelle aux sous-classes. La classe d'usine principale n'est plus responsable de la création de produits. De cette façon, la classe principale devient un rôle d'usine abstrait, responsable uniquement des interfaces que des sous-classes d'usine spécifiques doivent implémenter. L'avantage d'une abstraction plus poussée est que le modèle de méthode d'usine. permet au système de fonctionner sans modifier le rôle spécifique de l'usine. Introduction de nouveaux produits.
Le modèle de méthode d'usine est un dérivé du modèle d'usine simple et résout de nombreux problèmes du modèle d'usine simple. Tout d’abord, le « principe d’ouverture-fermeture » est pleinement réalisé et évolutif. Deuxièmement, des structures hiérarchiques plus complexes peuvent être appliquées à des situations où les résultats du produit sont complexes. [2]
Le modèle de méthode d'usine fait abstraction du modèle d'usine simple. Il existe une classe Factory abstraite (peut être une classe abstraite et une interface). Cette classe ne sera plus responsable de la production de produits spécifiques, mais formulera uniquement certaines spécifications, et le travail de production spécifique sera complété par ses sous-classes. Dans ce modèle, les classes d'usines et les classes de produits peuvent souvent correspondre en séquence. Autrement dit, une usine abstraite correspond à un produit abstrait et une usine concrète correspond à un produit spécifique. Cette usine spécifique est chargée de fabriquer le produit correspondant.
Le modèle de méthode d'usine est l'application la plus typique du modèle de méthode de modèle.
Structure des rôles :
Rôle Abstract Factory (Créateur) : C'est le cœur du modèle de méthode d'usine et n'a rien à voir avec l'application. Toute classe de fabrique pour les objets créés dans le modèle doit implémenter cette interface.
Rôle Concrete Factory (Concrete Creator) : il s'agit d'une classe d'usine concrète qui implémente l'interface d'usine abstraite, contient une logique étroitement liée à l'application et est appelée par l'application pour créer des objets produit. Il existe deux rôles de ce type dans l'image ci-dessus : BulbCreator et TubeCreator.
Rôle de produit abstrait (Product) : le super type de l'objet créé par le modèle de méthode d'usine, c'est-à-dire la classe parent commune ou l'interface commune de l'objet produit. Dans l'image ci-dessus, ce personnage est Light.
Rôle Produit concret : ce rôle implémente l'interface définie par le rôle produit abstrait. Un produit spécifique est créé par une usine spécifique et il existe souvent une correspondance individuelle entre eux.
Application du modèle :
Les méthodes d'usine sont souvent utilisées dans les deux situations suivantes :
La première situation concerne un certain produit, l'appelant sait clairement quel service d'usine spécifique doit être utilisé, instancie l'usine spécifique et fabrique des produits spécifiques. C'est le cas de la méthode iterator() dans Java Collection.
Dans le deuxième cas, vous avez juste besoin d'un produit, et vous ne voulez pas ou n'avez pas besoin de savoir quelle usine le produit. Autrement dit, la décision finale sur quelle usine spécifique utiliser appartient à l'entreprise. Ils sont basés sur le système actuel. Selon la situation, une usine spécifique est instanciée et restituée à l'utilisateur, et ce processus de prise de décision est transparent pour l'utilisateur.
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!