Dieser Artikel beschreibt den von Java implementierten KFC -Verbrauchsfall unter Verwendung eines abstrakten Fabrikmodells. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Musterdefinition
Das abstrakte Fabrikmuster bietet eine Schnittstelle zum Erstellen von Familien verwandter oder abhängiger Objekte, ohne konkrete Implementierungsklassen anzugeben.
Mit dem abstrakten Werksmodell können Kunden abstrakte Schnittstellen verwenden, um eine Reihe verwandter Produkte zu erstellen. Kundenklassen und Fabrikklassen sind getrennt. Wenn Kunden Produkte benötigen, müssen sie sie nur aus der Fabrik anfordern. Kunden können neue Produkte ohne Änderung erhalten.
2. Beispiele des Modells
1 Musteranalyse
Wir leihen uns die Schauplatz von Vater und Sohn aus, die in den KFC Store gehen, um dieses Muster zu verbringen. Der Screenshot nach Durchführung einer abstrakten Analyse ist wie folgt
2 Statische Modellierung abstrakter Fabrikmuster
3 Code Beispiele
3.1 Die Einrichtung von abstrakten Lebensmitteln
Zusammenfassung Lebensmittel - AbstractBaseFood
Paket com.demo.factory.model;/** * * Lebensmittelbasisklasse * * @author maofw * */public abstract Class AbstractBaseFood {// Kategorie Protected String Art; // Menge geschützt int num; // Preis geschützter Schwimmerpreis; // Total Public Float TotalPrice () {return this.num * this.price; }}Lebensmittelschnittstelle - Ifood
Paket com.demo.factory.model;/*** Abstract Food Interface** @Author maofw**/public interface ifood {/*** Ausdruck von Lebensmittelinformationen*/void printMesage ();}3.2 Abstrakte Basisklassen für verschiedene Lebensmittel festlegen
Hamburger -Basisklasse - Hamburg
Paket com.demo.factory.model; /** * Hamburger Basisklasse * @author maofw * * /public class class Hamburg erweitert AbstractBaseFood implementiert ifood {public void printmesage () {System.out.Println ("-" + this.kind + "Flora-Hambus-Störungen: THOMBED HAMBED HAMBED HAMBED: this.num + ", /t Total:" + this.totalprice ()); }}Hühnerflügel
Paket com.demo.factory.model; /** * Hühnerflügel-Basisklasse * @author maofw * * /public class Class ChickenWings erweitert AbstractBaseFood implementiert ifood {public void printmesage () {System.out.OUT.Println ("-" This.kind + "FloraSned Chicken Wings, /t Unit Price: /t Unit Price: /t Unit Price: /t Unit Price:", /T. /t-Einheit Preis: "THE", /T. + ", /t insgesamt:" + this.totalprice ()); }}Basisklasse für französische Pommes - Französischfries
Paket com.demo.factory.model; /** * French Fries Basisklasse * * @author maofw * * /public abstract Class Frenchfries erweitert AbstractBaseFood implementiert ifood {public void printmesage () {System.out.OUT.Println ("-" + This.kind + "THELNED FREIDED: + ", /t insgesamt:" + this.totalprice ()); }}Getränkebasisklasse - Getränk
package com.demo.factory.model;/** * Beverage base class * @author maofw * */public abstract class Beverage extends AbstractBaseFood implements IFood{ public void printMesage() { System.out.println("--" + this.kind + "Beverage, /t unit price: " + this.price + ", /t quantity: " + this.num + ", /t Gesamt: " + this.totalprice ()); }}3.3 Erstellen Sie bestimmte Lebensmittel
Würziger Hühnerbein Burger - Chinahanburm
Paket com.demo.factory.model.kfc; import com.demo.factory.model.hamburg;/** * Spicy Chicken Leg Burger im chinesischen Stil. this.kind = "würzig"; this.price = 14.0f; this.num = num; }}
Orleans Hühnerflügel - Chinachickenwings
Paket com.demo.factory.model.kfc; import com.demo.factory.model.chickenwings;/** * Hühnerflügel -Implementierungsklasse * @Author maofw * */public class chinachickenwings erweitert Chickenwings {öffentlich Chinachickenwings (int num) {this.kind = "orleans"; this.price = 2,5f; this.num = num; }}Pommes Frites - China -Frenchfries
Paket com.demo.factory.model.kfc; import com.demo.factory.model.frenchfries;/** * French Fries Implementationsklasse * * @author maofw * */public class chinafryfries erweitert Frenchfries {publicfrenchfries (int num) {this.kind = "normal"; this.price = 8.0f; this.num = num; }}Cola - Chinabeverage
Paket com.demo.factory.model.kfc; importieren com.demo.factory.model.beverage;/** * Getränke -Implementierungsklasse * * @author maofw * */public class Chinabeverage erweitert Getrauen {öffentliches ChinabaBeverage (int num) {this.kind = "cola"; this.price = 7.0f; this.num = num; }}3.4 eine Fabrik einrichten
Erstellen Sie eine abstrakte KFC -Fabrik - IKFCFactory produziert abstrakte Lebensmittel
Paket com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; com.demo.factory.model.Frenchfries; */public interface ikfcfactory {// Hamburger public Hamburg CreateHamburg (int num); // Pommes Frites Public Frenchfries CreateFrenchfries (int num) produzieren; // Hühnerflügel öffentliche Hühnerwünsche kreatechischen (int num); // Getränke öffentliche Getränke erstellen CreateBeverage (int num);}Erstellen Sie eine bestimmte KFC -Fabrik - ChinakfcFactory, um bestimmte Lebensmittel zu produzieren
Paket com.demo.factory.itf; import com.demo.factory.model.beverage; import com.demo.factory.model.chickenwings; import com.demo.factory.model.Frenchfries; com.demo.factory.model.hamburg; com.demo.factory.model.kfc.chinabeverage; import com.demo.factory.model Ikfcfactory {// Cola public Beverage CreateBeverage (int num) {Neue Chinabeverage zurückgeben (num); } // Produzieren Sie Orleans gebratene Hühnerflügel öffentliche Hühnerwünsche CreateChickenwings (int num) {Return New Chinachickenwings (num); } // Produzieren Französischfries createFrenchfries (int num) {return New ChinaFrenchfries (num); } // Spicy Chicken Leg Burger Burger Public Hamburg CreateHamburg (int num) {Return New Chinahanburm (num); }}3.5 Erstellen einer Kundenklasse - Kunde
Paket 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; com.demo.factory.model.hamburg;/** * Client -Klasse * * @author maofw * */public class customer {// Abstract Factory Private IKFCFactory KFCFactory; // Die Konstruktormethode übergibt die abstrakte Fabrik als Parameter in öffentlichen Kunden (IKFCFactory KFCFactory) {this.kfcfactory = kfcfactory; } / *** Bestellen Sie Essen* / // Spicy Chicken Leg Burger Public Float OrderHamburg (int num) {// Spicy Chicken Leg Burger Hamburg Hamburg = kfcfactory.createhamburg (num); // Ausgabeauftragsinformationen Hamburg.printmesage (); // Rückgabe die Gesamtpreisrendite Hamburg.totalprice (); } // Orleans Brat Hühnerflügel public float orderChockenwings (int num) {// Orleans Brathähnchen Wings Chickenwings Chickenwings = kfcfactory.createchickenwings (num); // Ausgabe von Bestellinformationen Chickenwings.printmesage (); // Return Total Price Return ChickenWings.Totalprice (); } // bestellen fries public float orderfrigfries (int num) {// Fries Fries Frenchfries Frenchfries = kfcfactory.CreateFrenchfries (num); // Ausgabeauftragsinformationen Frenchfries.printmesage (); // Return Total Price Return Frenchfries.Totalprice (); } // Coke public float orderBeverage (int num) {// Coke Beverage Beverage = kfcfactory.createBeverage (num) erhalten; // Ausgabe von Auftragsinformationen Beverage.printmesage (); // Rückgabe des Gesamtpreisertriebsgetriebes.Totalprice (); }}3.6 Storyline Display
Paket com.demo.factory; import java.lang.management java.sql.preeParedStatement; import Java.sql.sqlexception; import Java.text.numberformat; Import Java.util.Arrays; Import Java.util.calendar; Import Java.util.resourcebunddel; com.demo.factory.itf.chinakfcfactory; import com.demo.factory.itf.ikfcfactory; public class mainapp { / ** * Hauptantragsmethode * * @param args * / public static void main (String [] args) { / ** * Define a kfc (ikfcfactory type) Chinakfcfactory (); / *** Dad und Sohn gingen in die KFC, um sich auf die Bestellung vorzubereiten / *** Bestellung beginnen*/ // Ein scharfes Hühnchenbein Burger Float Hamhurgmoney = Customer.orderhamburg (1); // Vier Orleans Gegrillte Hühnerflügel float Chickenwingsmoney = Customer.Orderchickenwings (4); // eine Packung Pommes Float FrenchfriesMoney = Customer.Orderfrenchfries (1); // Zwei Tassen Cola Float Beveragemoney = Customer.OrderBeverage (2); System.out.println ("Gesamt:" + (Hamhurgmoney + ChickenwingsMoney + FrenchfriesMoney + Beveragemoney)); }}Auslaufergebnisse:
-Spicy Burger, Einheitspreis: 14,0, Menge: 1, Gesamt: 14,0
-ORLEANS Aromed Hähnchenflügel, Einheitspreis: 2,5, Menge: 4, Gesamt: 10,0
--Orordinary Aroma Pommes, Einheitspreis: 8,0, Menge: 1, Gesamt: 8,0
-Cola Getränk, Einheitspreis: 7,0, Menge: 2, Gesamt: 14,0
Gesamt: 46,0
3. Die Designprinzipien dieses Modells
1 Verwenden Sie mehr Objektkombinationen und weniger Vererbung
2. für abstrakte Programmierung, nicht für die Implementierungsprogrammierung
3 Produktobjekte werden durch Werksbelichtungsmethode erstellt
4. Verwenden Sie Anlässe
1. Erstellen Sie eine Produktfamilie und verwenden Sie zusammen verwandte Produkte zusammen;
2 Sie eine Produktbibliothek bereitstellen und nur ihre Schnittstelle anstelle der Implementierung anzeigen möchten.
3 Wenn die Fabrik in Kombination verwendet wird.
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.