résumé
Le motif de conception est un art. Si vous comprenez vraiment cet art, vous constaterez que le monde deviendra plus beau.
définition
Définissez une interface pour créer un objet, laissez sa sous-classe décider quelle classe instancier
Utiliser des scénarios
Partout où vous utilisez des objets complexes, vous pouvez utiliser le mode d'usine
Uml
1. Usine abstraite
Résumé Factory: Nous savons tous que les usines n'ont généralement qu'une seule fonction, c'est-à-dire la production, par exemple, Geely Automobile Factory, c'est-à-dire Geely Automobile, fabricant de téléphones mobiles iPhone, etc. Il peut donc être résumé d'une manière simple, c'est-à-dire, créez ();
2. Usines de fabrication d'automobiles spécifiques
Usine de fabrication d'automobile spécifique: réalise une usine abstraite, avec des processus et des méthodes réels pour la fabrication de voitures, etc.
3. VOITURE RÉSUMÉ
Résumé Cars: Nous savons généralement que les voitures peuvent courir, jouer de la musique, naviguer et tourner sont des caractéristiques communes des voitures.
4. VOITURES SPÉCIFIQUES
Résumé Car: les voitures en béton réalisent une voiture abstraite et ont toutes ses fonctions. Bien sûr, différentes voitures peuvent avoir des fonctions différentes.
La brève introduction ci-dessus est essentiellement que des usines automobiles spécifiques fabriquent des voitures correspondantes, telles que les usines Audi, les usines de Volkswagen, les voitures Volkswagen, etc.
Démo de code
Nous avons clairement compris la relation entre eux ci-dessus, nous allons donc utiliser le code pour démontrer nos idées et notre logique ci-dessus dans le code:
(1) l'usine de voitures abstraites
package com.zengtao.demo.factory; / ** * Résumé Factory * / public abstrait class carfactory {public abstract <t étend la voiture> t createcar (class <t> cla);}(2) usine automobile spécifique
Package com.zengtao.demo.factory; / ** * Audi Factory * / public class Audifactory étend Carfactory {@SuppressWarnings ("Un-d'époque") @Override public <T étend Car> T CreateCar (class <T> CLA) {Car Car = NULL; essayez {car = (car) class.forname (cla.getName ()). NewInstance (); } catch (exception e) {e.printStackTrace (); } retour (t) voiture; }}(3) Définition de la voiture abstraite
package com.zengtao.demo.factory; public abstrait class car {public abstract void drive (); Résumé public Void Self-Nagive (); Public Abstract Void PlayMusic ();}(4) voiture spécifique
(Audi Q3)
package com.zengtao.demo.factory; classe publique Audiq3Car étend Audicar {@Override public void Drive () {System.out.println ("Audiq3Car a été fabriqué avec succès"); System.out.println ("Drive Audiq3Car"); } @Override public void selfagive () {System.out.println ("Audiq3Car Self-Nagive"); } @Override public void playMusic () {System.out.println ("Audiq3Car Self-Nagive"); } @Override public void playMusic () {System.out.println ("Audiq3Car playMusic"); System.out.println (""); }}(Audi Q5)
package com.zengtao.demo.factory; classe publique Audiq5Car étend Audicar {@Override public void Drive () {System.out.println ("Audiq5car a été fabriqué avec succès"); System.out.println ("Audiq5Car Drive"); } @Override public void selfagive () {System.out.println ("Audiq5car Self-Nagive"); } @Override public void playMusic () {System.out.println ("Audiq5car Self-Nagive"); } @Override public void playMusic () {System.out.println ("Audiq5Car playMusic"); System.out.println (""); }}(5) Appel
Package com.zengtao.demo; Import com.zengtao.demo.factory.audifactory; import com.zengtao.demo.factory.audiq3car; Import com.zengtao.demo.factory.audiq5car; public class Main {public static void main (String [] str) {// Créer une audifactory de l'information Audifactory (); // Utilisez l'usine pour fabriquer une voiture Q3 Audiq3Car Audiq3Car = AudioFactory.CreateCar (Audiq3Car.Class); // Utilisez l'usine pour fabriquer une voiture Q5 AUDIQ5CAR Audiq5Car = AudIfactory.CreateCar (Audiq5Car.Class); // commence à conduire et à jouer de la musique audiq3car.drive (); Audiq3Car.PlayMusic (); Audiq5Car.Drive (); Audiq5Car.PlayMusic (); }}(6) Résultats
Quant à ce qui précède, la méthode d'usine est utilisée pour réaliser le processus simple de fabrication d'une voiture.
Premier point:
Dans l'usine abstraite, nous voyons que la méthode CreateCar (classe CLA), pourquoi la définissons-nous comme ceci? Utilisez la réflexion pour créer une voiture spécifique. De cette façon, nos différents types de voitures n'ont besoin que de conditions correspondantes, peuvent-elles être produites? Il est donc avantageux d'écrire de cette façon, comme beaucoup, Audi a Q3, Q5, A4, A6, A7, A8 et d'autres séries.
Deuxième point:
Si nous avons d'autres voitures, comme BMW, qui a également BMW X1, 320, X5, etc., nous pouvons également la mettre en œuvre très simplement, il suffit de mettre en œuvre l'usine abstraite, puis de mettre en œuvre la voiture abstraite dans la voiture spécifique, et que l'expansion est également très pratique.
Résumer
Il est presque temps de sortir de l'usine abstraite ici. Le modèle de méthode d'usine est un modèle de conception relativement simple et bon.
Mais il y a aussi des inconvénients, tels que: s'il existe des types nouveaux et autres de voitures, vous n'avez qu'à implémenter des usines abstraites et des voitures abstraites, puis de créer deux nouvelles classes
Mais si ce n'est pas une voiture, mais un téléphone mobile, vous devez tout écrire, ce qui fera apparaître beaucoup de classes, qu'il s'agisse d'adopter le modèle de méthode d'usine ou de décider en fonction des besoins.
Remarque: N'appliquez pas de modèles de conception pour le design. Bien sûr, les modèles de méthode d'usine sont également couramment utilisés, tels que: la méthode OnCreate de l'activité, nous chargeons et générons également des interfaces correspondantes en fonction de la disposition XML que nous définissons, etc.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.