Cet article décrit la méthode de mise en œuvre du modèle d'usine du modèle de conception Java. Partagez-le pour votre référence, comme suit:
Le modèle d'usine fournit principalement une interface de transition pour créer des objets, afin de protéger et d'isoler le processus spécifique de création d'objets, afin d'atteindre le but d'améliorer la flexibilité.
Le modèle d'usine est divisé en trois catégories:
1) modèle d'usine simple: non propice à la génération de séries de produits;
2) Méthode d'usine: également appelée usine polymorphe;
3) Résumé Modèle d'usine: Également connu sous le nom de boîte à outils, il produit des familles de produits, mais n'est pas propice à la génération de nouveaux produits;
1. modèle d'usine simple
Le mode d'usine simple est également connu sous le nom de mode de méthode d'usine statique. En renommant, vous pouvez voir que ce modèle doit être très simple. Son objectif est simple: définir une interface pour créer des objets.
Dans le modèle d'usine simple, une classe d'usine est au centre des appels d'instanciation vers une classe de produits, qui détermine quelle classe de produits doit être instanciée, tout comme un policier se tient dans le flux des véhicules et décide de libérer le véhicule dans quelle direction couler. Jetons un coup d'œil à sa composition:
1) Rôle d'usine: Il s'agit du cœur de ce modèle, qui contient une certaine logique métier et une logique de jugement. En Java, il est souvent mis en œuvre par une classe de béton.
2) Rôle du produit abstrait: il s'agit généralement d'une classe parent héritée par un produit spécifique ou une interface implémentée. Implémenté par interfaces ou classes abstraites en Java.
3) Rôle du produit spécifique: L'objet créé par la classe d'usine est une instance de ce rôle. Implémenté par une classe concrète en Java.
2. Modèle de méthode d'usine
Le modèle de méthode d'usine est l'abstraction et la promotion supplémentaires du modèle d'usine simple. Dans le modèle de méthode d'usine, il n'est plus déterminé par une seule classe d'usine que la classe de produits doit être instanciée. Cette décision est rendue à la sous-classe de l'usine abstraite à prendre. Jetons un coup d'œil à sa composition:
1) Rôle d'usine abstrait: c'est le cœur du modèle de méthode d'usine, cela n'a rien à voir avec l'application. Il s'agit d'une interface qu'un rôle d'usine spécifique doit implémenter ou une classe parent qui doit être héritée. En Java, il est implémenté par des classes abstraites ou des interfaces.
2) Rôle d'usine spécifique: il contient du code lié à une logique métier spécifique. Appelé par l'application pour créer l'objet de produit spécifique correspondant.
3) Rôle du produit abstrait: c'est la classe parent héritée par un produit spécifique ou une interface implémentée. En Java, il existe généralement des classes ou des interfaces abstraites pour les implémenter.
4) Rôle du produit spécifique: L'objet créé par un rôle d'usine spécifique est une instance de ce rôle. Implémenté par des classes concrètes en Java.
Le modèle de méthode d'usine utilise plusieurs sous-classes héritées du rôle d'usine abstraite pour remplacer la "classe de Dieu" dans le modèle d'usine simple. Comme mentionné ci-dessus, cela partagera la pression sur l'objet; Et cela rendra la structure flexible - lorsqu'un nouveau produit (c'est-à-dire la voiture du nouveau riche) est généré, tant qu'il est généré selon le contrat fourni par le rôle de produit abstrait et le rôle d'usine abstrait, il peut être utilisé par le client sans avoir à modifier aucun code existant. On peut voir que la structure du rôle d'usine est également conforme au principe de l'ouverture et de la fermeture!
Le code est le suivant:
// Résultat de produit Abstraire Interface publique Moveable {void run ();} // Rôle de produit spécifique La classe publique plan implémente Moveable {@Override public void run () {System.out.println ("plan ...."); }} classe publique Broom implémente Moveable {@Override public void run () {System.out.println ("Broom ......"); }} // Résumé Factory Public Résumé Classe de véhicules VectorFactory {Abstract Moveable Create ();} // Special Factory Public Class PlaneFactory étend VehicleFactory {Public Moveable Create () {return new Plane (); }} classe publique BroomFactory étend VehicleFactory {public mewable créate () {return new Broom (); }} // Classe de test Public Class Test {public static void main (String [] args) {VehicleFactory Factory = new BroomFactory (); Mobile m = factory.create (); M.Run (); }}3. Modèle d'usine abstrait
Le code est le suivant
// Résumé Classe d'usine Classe abstraite Public AbstractFactory {Public Abstract Vehicle CreateVeHicle (); Arme abstraite publique CreateWeapon (); Public Abstract Food CreateFood ();} // Classe d'usine en béton, où la nourriture, le véhicule, l'arme sont des classes abstraites, la classe publique DefaultFactory étend AbstractFactory {@Override public Food CreateFood () {return new Apple (); } @Override Public Vehicle CreateVeHicle () {return new Car (); } @Override Public Arme CreateEAPon () {return new AK47 (); }} // classe de test de classe publique test {public static void main (String [] args) {abstractFactory f = new defaultFactory (); Véhicule v = f.CreateVeHicle (); v.run (); Arme w = f.createwapon (); w.shoot (); Nourriture a = f.createfood (); A.printName (); }}Dans le modèle d'usine abstrait, le produit abstrait peut être un ou plusieurs, formant ainsi une ou plusieurs familles de produits. Dans le cas d'une seule famille de produits, le modèle d'usine abstrait dégénère réellement au modèle de méthode d'usine.
Résumer:
(1) Le modèle d'usine simple consiste à créer des instances d'autres classes par une classe spécifique. La classe parent est la même et la classe parent est spécifique.
(2) Le modèle de méthode d'usine est qu'il existe une classe de parent abstraite définissant l'interface publique et que la sous-classe est responsable de la génération d'objets en béton. Le but de cela est de retarder l'instanciation de la classe à la sous-classe.
(3) Le modèle d'usine abstrait fournit une interface pour créer une série d'objets associés ou interdépendants sans spécifier leurs classes spécifiques. Il cible les structures hiérarchiques avec plusieurs produits. Le modèle de méthode d'usine s'adresse à la structure de hiérarchie d'un produit.
Pour plus de contenu lié à Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Tutoriel de structure de données Java et d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.