Cet article décrit le cas de consommation KFC mis en œuvre par Java à l'aide du modèle Résumé d'usine. Partagez-le pour votre référence, comme suit:
1. Définition du modèle
Le modèle d'usine abstrait fournit une interface pour créer des familles d'objets connexes ou dépendants sans spécifier des classes d'implémentation concrètes.
Le modèle d'usine abstrait permet aux clients d'utiliser des interfaces abstraites pour créer un ensemble de produits connexes. Les cours clients et les cours d'usine sont séparés. Lorsque les clients ont besoin de produits, ils n'ont qu'à les demander à l'usine. Les clients peuvent obtenir de nouveaux produits sans modification.
2. Exemples du modèle
1 analyse de modèle
Nous empruntons la scène du père et du fils qui se rend dans le magasin KFC pour consommer pour illustrer ce modèle. La capture d'écran après une analyse abstraite est la suivante
2 Modélisation statique des modèles d'usine abstraits
3 exemples de code
3.1 La création de nourriture abstraite
Alimentation abstraite - AbstractBasefood
package com.demo.factory.model; / ** * * Classe de base alimentaire * * @author maofw * * / public abstrait classe abstractBaseFood {// catégorie de chaîne protégée; // Quantité protégée int num; // Prix de flotteur protégé du prix; // Total public float totalPrice () {return this.num * this.price; }}Interface alimentaire - Ifood
package com.demo.factory.model; / ** * Interface alimentaire abstraite * * @author maofw * * / interface publique ifood {/ ** * Imprimer des informations alimentaires * / void printMesage ();}3.2 Établir des cours de base abstraits pour différents aliments
Classe de base du hamburger - Hambourg
package com.demo.factory.model; / ** * classe de base de Hambourg * @author maofw * * / public abstrait class hambourg étend AbstractBaseFood implémente ifood {public void printMesage () {System.out.println ("-" + this.kinD + "Hamburger, / t this Unit Price:" + this.PRICE + "," THAMBURGER, / T this unit + ", / t total:" + this.totalprice ()); }}Ailes de poulet
Package com.demo.factory.model; / ** * Classe de base des ailes de poulet * @author maofw * * / public abstrait classe de poulairs étend AbstractBaseFood implémente ifood {public void printMesage () {System.out.println ("-" + this.kinD + "Fermed Chicken Wings, / t Unit Price:" + this.PRICE + ", / T wings, / the To Unit Price:" + this. ", / t total:" + this.totalprice ()); }}Classe de base de frites - Français
package com.demo.factory.model;/** * French fries base class * * @author maofw * */public abstract class FrenchFries extends AbstractBaseFood implements IFood{ public void printMesage() { System.out.println("--" + this.kind + "flavored fries, /t unit price: " + this.price + ", /t quantity: " + this.num + ", / t total:" + this.totalprice ()); }}Classe de base de boissons - boisson
Package com.demo.factory.model; / ** * Classe de base de boissons * @Author Maofw * * / public Résumé Classe La boisson étend AbstractBaseFood implémente ifood {public void PrintMesage () {System.out.println ("-" + this.kind + "Beseeth, / T Price d'unité:" + ce.price + " total: "+ this.totalprice ()); }}3.3 Créer des aliments spécifiques
Burger à jambe de poulet épicée - Chinahanburm
Package com.demo.factory.model.kfc; import com.demo.factory.model.hamburg; / ** * de style chinois de poulet épicé hamburger * * @author maofw * * / classe publique chinahanburm étend hambourg {/ ** * la méthode de construction * * @param kind * @param prix * @Param num * / public chinahanBurm (@param kind * @param prix * @Param num * / public chinaHBURM (@param kind * @Param Price * @Param Num * / Public ChinaHBurm (INTRAM KIND * @Param Price * @Param Num * / Public ChinaHBURM (INTRAM KNET * @PARAM PRIX * this.kind = "Spicy"; this.price = 14.0f; this.num = num; }}Orleans Chicken Wings - Chinachickenwings
Package com.demo.factory.model.kfc; import com.demo.factory.model.chickenwings; / ** * Classe d'implémentation des ailes de poulet * * @author maofw * * / classe publique Chinachickenwings étend les poulettes {public chinachickenwings (int num) {this.kind = "Orleans"; this.price = 2,5f; this.num = num; }}FRIES - Chinafrenchfries
Package com.demo.factory.model.kfc; import com.demo.factory.model.frenchfries; / ** * Frenries Friries Classe * * @author maofw * * / public class chinafrenchfries étend FrenchFries {public ChinaFrenchfries (int num) {this.kind = "normal"; this.price = 8.0f; this.num = num; }}Coke - Chinabeverage
package com.demo.factory.model.kfc; import com.demo.factory.model.beverage; / ** * Classe d'implémentation de la boisson * * @author maofw * * / public class chinabeverage étend la boisson {public chinabeverage (int num) {this.kind = "cola"; this.price = 7.0f; this.num = num; }}3.4 Établir une usine
Créer une usine KFC abstraite - IKFCFactory produit des aliments abstraits
Package com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; import com.demo.factory.model.frenchfries; import com.demo.factory.model.hamburg; / ** * kfc absact Classé de base de factory ABSTRACTOR * / Interface publique ikfcfactory {// Produce Hamburger public hambourg createhamburg (int num); // produit des frites publiques Frenchs Createfrenchfries (int num); // Produire des ailes de poulet CreateChickenwings de poulet (int num); // produit des boissons publiques CreateBeverage (int num);}Créez une usine KFC spécifique - ChinaKFCFactory pour produire des aliments spécifiques
package com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; import com.demo.factory.model.frenchfries; import com.demo.factory.model.hamburg; import; com.demo.factory.model.kfc.chinabeverage; import com.demo.factory.model.kfc.chinachickenwings; import com.demo.factory.model.kfc.chinafrenchfries; import com.demo.factory.model.kfc.chinahanburm; Classé public Chinakfcfcfic Ikfcfactory {// Produce Coke Public Beverage CreateBeverage (int num) {return new Chinabeverage (num); } // Produit des ailes de poulet rôties d'Orléans CreateChickenwings (int num) {return new Chinachickenwings (num); } // Produire FrenchFries CreateFrenchFries (int num) {return new ChinaFrenchFries (num); } // Produire le jambe de poulet épicée burger public hambourg createhamburg (int num) {return new chinahanburm (num); }}3.5 Créer une classe client - Client
package com.demo.factory.custom; import com.demo.factory.itf.ikfcfactory; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; import com.demo.factory.model.frenchfries; import com.demo.factory.model.hamburg; * Classe client * * @author maofw * * / classe publique Client {// Résumé Factory privé ikfcfactory kfcfactory; // La méthode du constructeur passe l'usine abstraite en tant que paramètre dans le client public (ikfcfactory kfcfactory) {this.kfcfactory = kfcfactory; } / ** * Commandez de la nourriture * / // commander la jambe de poulet épicée Burger Public Float Orderhamburg (int num) {// Get Spicy Chicken Leg Burger Hamburg Hamburg = Kfcfactory.CreateHamburg (NUM); // Informations sur l'ordre de sortie HAMBURG.PRINTMESAGE (); // retourne le rendement total des prix hamburg.totalprice (); } // Commandez des ailes de poulet rôties d'orléans. // Informations de sortie de sortie Informations sur poulet.printMesage (); // RETOUR TOTAL PRIX RETOURS POULETS.TOTALPRICE (); } // Order Fries Float Public OrderFrenchFries (int num) {// Get Fries FrenchFries FrenchFries = kfcfactory.createfrenchfries (num); // Informations de commande de sortie FrenchFries.printMesage (); // RETOUR TOTAL RETOUR RETOUR FRANNFRIES.TOTALPRICE (); } // Order Coke Public Float OrderBeverage (int num) {// Get Coke Beverage Beverage = KFCFactory.CreateBeverage (NUM); // Informations de commande de sortie beverage.printMesage (); // Renvoie le rendement total des prix beverage.totalprice (); }}3.6 Affichage du scénario
package com.demo.factory; import java.lang.management.managementfactory; import java.net.httpurlconnection; import java.net.url; import java.net.urlconnection; import java.net.urlconnection; import java.sql.connection; import java. java.sql.preparedstatement; import java.sql.sqlexception; import java.text.numberformat; import Java.util.array com.demo.factory.itf.chinakfcfactory; import com.demo.factory.itf.ikfcfactory; classe publique MainApp {/ ** * Méthode d'application principale * * @param args * / public static void Main (String [] args) {/ ** * Define a kfc (ikfcfactory ChinaKfcfactory (); / ** * papa et fils sont entrés dans KFC pour se préparer à commander * / client client = nouveau client (KFCFactory); / ** * Commencez à commander * / // un burger de jambe de poulet épicé à hamhurgmoney = Customer.OrderHamburg (1); // quatre ailes de poulet grillées d'Orléans à flotteur de poulet à flotteur = Customer.OrderChickenwings (4); // un pack de frites flottait FrenchFriesmoney = Customer.OrderFrenchFries (1); // deux tasses de cola float beveragemoney = Customer.OrderBeverage (2); System.out.println ("Total:" + (hamhurgmoney + pouletwingsmoney + frenchfriesmoney + beveragemoney)); }}Résultats en cours:
- Burger-Spicy, prix unitaire: 14,0, quantité: 1, total: 14,0
- Orleans Aromousshed Poulet Ailes, Prix unitaire: 2,5, quantité: 4, total: 10,0
- Fracles de saveur, prix unitaire: 8,0, quantité: 1, total: 8,0
- COLA BOISSE, Prix unitaire: 7,0, quantité: 2, total: 14,0
Total: 46,0
3. Les principes de conception de ce modèle
1 Utilisez plus de combinaisons d'objets et moins d'héritage
2. Pour la programmation abstraite, pas pour la programmation d'implémentation
3 objets de produit sont créés par la méthode d'exposition en usine
4. Utiliser des occasions
1. Créez une famille de produits et utilisez des produits connexes ensemble;
2 Je souhaite fournir une bibliothèque de produits et ne souhaite afficher son interface qu'au lieu de l'implémentation;
3 Lors de l'utilisation de l'usine en combinaison.
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel 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.