Mode d'usine simple
Diagramme de classe
Créer des objets correspondants avec une condition via une classe d'usine
// Fonctions commerciales interface publique icalculation {double getResult (double numa, double engourdissement); } classe publique Calcadd implémente icalculation {@Override public double getResult (double numa, double numb) {System.out.println ("add"); retour NUMA + Numb; }} classe publique CalcSubstract implémente icalculation {@Override public double getResult (double numa, double engourdissement) {System.out.println ("soustraction"); retour numa - Numb; }} / * * Le mode d'usine simple se concentre sur: Création d'objets * Créez une classe d'usine pour créer des instances de certaines classes qui implémentent la même interface ou ont des relations d'héritage * / classe publique Test4Simple {public static void main (String [] args) {// String opération = "/"; String Operation = "+"; // String Operation = "-"; // String Operation = "*"; Double Numa = 182, Numb = 33; Icalculation createCalc = calccSimplefactory.CreateCalc (opération); Double result = createCalc.GetResult (numa, numb); System.out.println (résultat); }} Les défauts d'une usine simple: lorsqu'une simple usine crée un produit, il est nécessaire de passer les paramètres correspondants. Si le pass est incorrect, l'objet ne peut pas être récupéré.
Amélioration: créer différentes catégories de produits de plusieurs manières
classe publique CalmMultipleFactory {public static icalculation productaDd () {return new Calcadd (); } public static icalculation prodolusubstract () {return new CalcSubstract (); } public static icalculation produmultiply () {return new CalmMultiply (); } public static icalculation produitIVIDID () {return new CalcDivide (); }} classe publique test4Multiple {public static void main (String [] args) {double numa = 182, numb = 33; Icalculation createCalc = calcMultiplefactory.produDeAdd (); Double result = createCalc.GetResult (numa, numb); System.out.println (résultat); createCalc = calcMultiplefactory.produceSubstract (); result = createCalc.GetResult (numa, numb); System.out.println (résultat); createCalc = calcMultiplefactory.produceSubstract (); result = createCalc.GetResult (numa, numb); System.out.println (résultat); createCalc = calcMultiplefactory.produceMultiply (); result = createCalc.GetResult (numa, numb); System.out.println (résultat); createCalc = calcMultipleFactory.Produitvide (); result = createCalc.GetResult (numa, numb); System.out.println (résultat); }} Modèle d'usine abstrait
Il y a plusieurs concepts: l'usine abstraite, l'usine physique, le produit abstrait, le produit physique abstrait usine: définir la méthode abstraite de création de produits. Entité Factory: Création de produits abstraits de produits spécifiques: une interface ou une classe de base Produit d'entité: implémenter des fonctions spécifiques ou des diagrammes de classe dérivés
// Résumé Product1 Interface publique iProduct1 {public void show (); } // Résumé Product2 Interface publique iProduct2 {public void show (); } // entité product1 public class Product1 implémente iProduct1 {public void show () {System.out.println ("Product de type 1 créé"); }} // entité product2 public class Product2 implémente iProduct2 {public void show () {System.out.println ("Produit de type 2 créé"); }} / * * 1a 1b appartient à Product1 dans la même structure de hiérarchie de produit * 2a 2b appartient à Product2 * / classe publique Gredeproduct1a étend Product1 {@Override public void show () {super.show (); System.out.println ("Ceci est sous le produit 1: produit A"); }} classe publique Gredeproduct1b étend Product1 {@Override public void show () {super.show (); System.out.println ("Ceci est sous le produit 1: produit B"); }} classe publique Gredeproduct1b étend Product1 {@Override public void show () {super.show (); System.out.println ("Ceci est sous le produit 1: produit B"); }} classe publique Gredeproduct2a étend Product2 {@Override public void show () {super.show (); System.out.println ("Ceci est sous le produit 2: produit A"); }} classe publique Gredeproduct2b étend Product2 {@Override public void show () {super.show (); System.out.println ("Ceci est sous le produit 2: produit B"); }} // L'usine abstraite crée différents produits abstraits Interface publique Ifactory {public iproduct1 CreateProduct1a (); // Classe 1 Modèle de produit A public iproduct1 createProduct1b (); // Classe 1 Modèle B Public 2 CreateProduct2b (); // Class 2 Product Model a Public iProduct2 créproduct2b (); // L'usine de produits de classe 1 crée des produits physiques, le type de retour est abstrait produit public classe d'usine implémente ifactory {public iProduct1 createProduct1a () {return new GredeProduct1a (); } public iProduct1 createProduct1b () {return new GredEProduct1b (); } public iproduct2 createProduct2a () {return new GredEProduct2a (); } public iproduct2 createProduct2b () {return new GredEProduct2b (); }} / * * Résumé Modèle d'usine: Utilisé pour créer un ensemble d'objets associés ou interdépendants * * Processus: Résumé Factory, Factory Physical produit des produits * Produit abstrait, le produit physique réalise les fonctions du produit * Usine(); IProduct1 product1a = factory.CreateProduct1a (); Product1a.show (); IProduct1 product1b = factory.CreateProduct1b (); Product1b.show (); IProduct2 product2a = factory.CreateProduct2a (); Product2a.show (); IProduct2 product2b = factory.CreateProduct2b (); Product2b.show (); }}