Définition du modèle de méthode d'usine
La signification du modèle de méthode d'usine est de définir une interface d'usine pour créer des objets de produit et reporter le travail de création réel aux sous-classes. La classe d'usine de base n'est plus responsable de la création de produits, de sorte que la classe de base devient un rôle d'usine abstraite et n'est responsable que des interfaces qui doivent être implémentées par des sous-classes d'usine spécifiques. L'avantage d'une abstraction supplémentaire est que le modèle de méthode d'usine peut permettre au système d'introduire de nouveaux produits sans modifier le rôle d'usine spécifique.
Il contient les rôles suivants:
Diagramme de classe de classe UML
Exemple
Supposons qu'il y ait trois recharges, à savoir les recharges rouges, les recharges bleues et les recharges noires. Les utilisateurs espèrent utiliser des stylos à bille pour clarifier la couleur de la recharge.
Description et utilisation de la structure du motif
1. Produit abstrait: Pencore.java
classe abstrait public Pencore {String Color; Public abstrait void writeword (String S);} 2. Produit spécifique (ConcreteProduct) _1: redpencore.java
La classe publique RedPencore étend Pencore {redPencore () {color = "red"; } public void writeword (string s) {System.out.println ("Écrivez le mot" + couleur + ":" + s); }} Produit spécifique (ConcreteProduct) _2: BluePencore.java
La classe publique BluePencore étend Pencore {bluePencore () {color = "bleu"; } public void writeword (string s) {System.out.println ("Écrivez le mot" + couleur + ":" + s); }} Produit spécifique (ConcreteProduct) _3: BlackPencore.java
La classe publique BlackPencore étend Pencore {BlackPencore () {Color = "Black"; } public void writeword (string s) {System.out.println ("Écrivez le mot" + couleur + ":" + s); }} 3. Constructeur: Ballpen.java
classe abstraite de classe BallPen {BallPen () {System.out.println ("Produit un stylo à billes avec" + getPencore (). Color + "REFILL CORE"); } Public Résumé Pencore getPencore (); // Méthode d'usine} 4. ConcreteCreator:
Redballpen.javapublic La classe Redballpen étend BallPen {public Pencore getPencore () {return new Redpencore (); }} Blueballpen.javapublic La classe Blueballpen étend BallPen {public Pencore getPencore () {return new BluePencore (); }} Blackballpen.javapublic La classe Blackballpen étend Ballpen {public Pencore getPencore () {return new BlackPencore (); }} 5. Application.java
Application de classe publique {public static void main (String args []) {Pencore Pencore; Ballpen Ballpen = new BlueBrallpen (); Pencore = ballpen.getPencore (); pencore.writeword ("Bonjour, je suis heureux de vous connaître"); BallPen = new Redballpen (); Pencore = ballpen.getPencore (); pencore.writeword ("comment allez-vous"); BallPen = new Blackballpen (); Pencore = ballpen.getPencore (); pencore.writeword ("Ravi de vous rencontrer"); }} Résumer
Le modèle de méthode d'usine appartient au modèle de création de classe. En mode Méthode d'usine, la classe Parent Factory est responsable de la définition de l'interface publique pour la création d'objets de produit, tandis que la sous-classe d'usine est responsable de la génération d'objets de produit spécifiques. Le but de cela est de retarder le fonctionnement de l'instanciation de la classe de produit à la sous-classe d'usine, c'est-à-dire pour déterminer quelle classe de produits spécifique doit être instanciée via la sous-classe d'usine.
Le modèle de méthode d'usine est une autre abstraction et promotion du modèle d'usine simple. En raison de l'utilisation du polymorphisme orienté objet, le modèle de méthode d'usine maintient les avantages d'un modèle d'usine simple et surmonte ses inconvénients. Dans le modèle de méthode d'usine, la classe d'usine de base n'est plus responsable de la création de tous les produits, mais donne plutôt le travail de création spécifique à la sous-classe. Cette classe de base est uniquement responsable de donner aux interfaces que l'usine spécifique doit implémenter, mais pas les détails de l'instanciation de la classe de produits. Cela permet au modèle de méthode d'usine de permettre au système d'introduire de nouveaux produits sans modifier le rôle d'usine. Le principal avantage du modèle de méthode d'usine est que lors de l'ajout de nouvelles classes de produits, il n'a pas besoin de modifier le système existant et résume les détails de création de l'objet produit. Le système a une bonne flexibilité et une bonne évolutivité; Son inconvénient est qu'il nécessite d'ajouter de nouvelles usines tout en ajoutant de nouveaux produits, ce qui entraîne des paires de classes de systèmes, ce qui augmente la complexité du système dans une certaine mesure.