Résumé
Le modèle de conception est un art Si vous comprenez vraiment cet art, vous constaterez que le monde deviendra plus beau.
Définition
Définir une interface pour créer des objets et laisser ses sous-classes décider quelle classe instancier
Scénarios d'utilisation
Toute utilisation d'objets complexes Vous pouvez utiliser le modèle d'usine n'importe où
UML
1. Usine abstraite
Usine abstraite : Nous savons tous que les usines, en général, il n'y en a qu'une fonction, qui est de produire. Par exemple, une usine automobile Geely fabrique des voitures Geely, un fabricant d'iPhone fabrique des iPhone, etc.
Cela peut donc être résumé de manière simple, ce qui est create();
2 . Usine de fabrication de voitures en béton
Usine de fabrication de voitures en béton : met en œuvre une usine abstraite, avec des processus et méthodes réels de fabrication de voitures, etc.
Voiture abstraite
3. Voiture abstraite : Nous savons généralement que les voitures peuvent courir, jouer de la musique, naviguer et tourner. Ce sont les caractéristiques communes des voitures
4. Les voitures en béton
Les voitures abstraites : le béton. La voiture réalise la voiture abstraite et a toutes ses fonctions. Bien sûr, différentes voitures peuvent avoir des fonctions différentes
Ce qui précède est une simple introduction. De manière générale, des usines automobiles spécifiques fabriquent des voitures correspondantes. fabrique des voitures Audi, l'usine de Volkswagen, qui fabrique des voitures Volkswagen, etc.
Démonstration de code
Nous avons clairement compris la relation entre eux ci-dessus, alors utilisez simplement le code pour démontrer et exprimer nos idées ci-dessus et logique dans le code :
(1) Usine automobile abstraite
package com.zengtao.demo.factory; /** * 抽象工厂 */ public abstract class CarFactory { public abstract <T extends Car> T createCar(Class<T> cla); }
(2) Usine automobile spécifique
package com.zengtao.demo.factory; /** * 奥迪工厂 */ public class AudiFactory extends CarFactory { @SuppressWarnings("unchecked") @Override public <T extends Car> T createCar(Class<T> cla) { Car car = null; try { car = (Car) Class.forName(cla.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } return (T) car; } }
(3) Définir une voiture abstraite
package com.zengtao.demo.factory; public abstract class Car { public abstract void drive(); public abstract void selfNagive(); public abstract void playMusic(); }
(4) Voiture spécifique
(Audi q3)
package com.zengtao.demo.factory; public class AudiQ3Car extends AudiCar { @Override public void drive() { System.out.println("AudiQ3Car 已经制造成功"); System.out.println("AudiQ3Car drive"); } @Override public void selfNagive() { System.out.println("AudiQ3Car selfNagive"); } @Override public void playMusic() { System.out.println("AudiQ3Car playMusic"); System.out.println(""); } }
(Audi q5)
package com.zengtao.demo.factory; public class AudiQ5Car extends AudiCar { @Override public void drive() { System.out.println("AudiQ5Car 已经制造成功"); System.out.println("AudiQ5Car drive"); } @Override public void selfNagive() { System.out.println("AudiQ5Car selfNagive"); } @Override public void playMusic() { System.out.println("AudiQ5Car playMusic"); System.out.println(""); } }
(5) Appeler
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) { // 创建工厂 AudiFactory audiFactory = new AudiFactory(); // 利用工厂制造q3车 AudiQ3Car audiQ3Car = audiFactory.createCar(AudiQ3Car.class); // 利用工厂制造q5车 AudiQ5Car audiQ5Car = audiFactory.createCar(AudiQ5Car.class); // 开始开车放音乐 audiQ3Car.drive(); audiQ3Car.playMusic(); audiQ5Car.drive(); audiQ5Car.playMusic(); } }
(6) Résultat
Ce qui précède utilise le modèle de méthode d'usine pour réaliser la fabrication Le processus simple d'une voiture
Le premier point :
Dans l'usine abstraite, nous voyons la méthode createCar(Class cla), pourquoi la définissons-nous comme ça, utilisons la réflexion pour créer des voitures spécifiques De cette façon, nos différents types de voitures n'ont besoin que de conditions correspondantes. pour les produire. Il est donc avantageux d'écrire comme ça, Audi a les q3, q5, a4, a6, a7 , a8 et d'autres séries sont les mêmes
Deuxième point :
Si nous avons d'autres voitures, comme BMW, et que nous avons également des BMW x1, 320, x5, etc., nous pouvons aussi être très simples Pour mettre en œuvre, il vous suffit d'implémenter l'usine abstraite, puis la voiture spécifique peut implémenter la voiture abstraite. L'extension est également très pratique
Résumé
L'usine abstraite est presque là, le modèle de méthode d'usine est une comparaison C'est un modèle de conception simple et bon
mais il a aussi des défauts. Par exemple : s'il y a de nouveaux types de voitures, il suffit d'implémenter des usines abstraites et des voitures abstraites, et de créer deux nouvelles classes
Mais si ce n'est pas une voiture mais un téléphone portable. , alors vous devez tout écrire. Cela fera apparaître de nombreuses classes. L'utilisation ou non du modèle de méthode d'usine dépend des besoins.
Remarque : vous ne devez pas appliquer de modèles de conception pour des raisons de conception. Bien sûr, le modèle de méthode d'usine est également couramment utilisé, comme la méthode onCreate d'Activité. Nous chargeons et générons également l'interface correspondante basée sur. la mise en page XML définie par nous-mêmes, etc. etc.
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun, et j'espère également que tout le monde soutiendra PHP. Site chinois.
Pour plus d'articles liés au modèle de méthode d'usine des modèles de conception Java, veuillez faire attention au site Web PHP chinois !