Model Builder
Builder-Modus (Builder Pattern) eine Vielzahl von einfachen Objekten unter Verwendung von Schritt in eine komplexe Aufgabe durch Schritt aufzubauen. Diese Art von Entwurfsmustern gehören Schema zu erstellen, die die beste Weg, um Objekte zu erstellen bietet.
Builder-Klasse ist ein Schritt für Schritt das letzte Objekt zu konstruieren. Die Builder-Klasse ist unabhängig von den anderen Objekten.
Einführung
Absichten: eine komplexe Aufbau seiner Darstellung Trennung, so dass die gleiche Bauprozesses verschiedene Darstellungen erstellen können.
Vor allem zu lösen: die Hauptlösung in das Softwaresystem, manchmal mit Blick auf "ein komplexes Objekt" Arbeit zu schaffen, die in der Regel ein bestimmter Algorithmus besteht aus verschiedenen Teilen des Unterobjekt, aufgrund von Änderungen in der Nachfrage, Gesicht die verschiedenen Teile des komplexen Themas oft eine drastische Veränderung, aber sie werden kombinieren Algorithmus ist relativ stabil.
Wann verwendet man :Es wird nicht einige der grundlegenden Komponenten ändern und Kombinationen davon ständig Zeiten ändern.
Wie zu beheben: die veränderten und unveränderten getrennt.
Der Schlüsselcode: Builder: Erstellen und liefern Beispiele, Regie: Abhängigkeitsmanagement - Instanz aufgebaut werden.
Anwendungsbeispiele: 1, gehen Sie zu KFC, Burger, Cola, französisch frites, frittierte Hähnchenflügel usw. konstant ist , und seine Zusammensetzung verändert sich ständig, Erzeugen eines sogenannten "Paket."2, JAVA in Stringbuilder.
Vorteile: 1, ein unabhängiger Builder, leicht zu erweitern.2, einfach die Details Risiko zu kontrollieren.
Nachteile: 1, muss das Produkt gemeinsam haben, ist die Reichweite begrenzt.2. Die komplexe interne Änderungen, wird es eine Menge von Bau-Klassen sein.
Einsatzszenarien: 1, müssen Sie das Objekt zu erzeugen , hat eine komplexe innere Struktur.2, müssen innerhalb der Objekteigenschaft selbst voneinander abhängig erzeugt werden.
Hinweis: Der Unterschied zwischen dem Anlagenmodell ist: Builder - Modell mit der Reihenfolge der Montage der Teile mehr betroffen ist.
Realisierung
Wir gehen davon aus, dass ein Fast-Food-Restaurant Business Case, in dem ein Paket eine typische Burger sein kann (Burger) und ein Glas kaltes (Cold Drink). Burger (Burger) können vegetarische Burger (Veg Burger) oder Hähnchen-Burger (Chicken Burger) sein, werden sie in das Papierfach eingewickelt. Cold (Kalte Getränke) kann eine Coca-Cola (Cola) oder Pepsi (Pepsi) sein, sie in Flaschen verpackt sind.
Wir werden eine Darstellung von Lebensmitteln (wie Burger und kalt) vonItem- Schnittstelle und Implementierung EntitätsklasseArtikelSchnittstelle erstellen und eine Schnittstelle und Implementierung Einheit darstellt Lebensmittel VerpackungVerpackungSchnittstelleVerpackung,Hamburg ist das Paket in das Papierfach kalt ist in Flaschen verpackt.
Dann erstellen wir eineMahlzeitKlassen, Arraylist und eineMahlzeitauf verschiedene Arten von Objekten durch eine Kombination vonArtikelMealBuilder mitArtikel erstellen.BuilderPatternDemo, zeigen wir die Verwendung vonMealBuilderKlasse eineMahlzeitzuerstellen.
Schritt 1
Erstellt ein Lebensmittel und Lebensmittelverpackungen Eintrag Schnittstelle.
Item.java
public interface Artikel { public String name (); Öffentlichkeit Verpackung Verpackung (); public float Preis (); }
Packing.java
öffentliche Schnittstelle Verpackung { public String pack (); }
Schritt 2
Verpackung schaffen implementieren Entitätsklassen die Schnittstelle.
Wrapper.java
public class Wrapper implementiert Verpackung { @Override public String pack () { return "Wrapper"; } }
Bottle.java
public class Bottle Geräte Verpackung { @Override public String pack () { return "Bottle"; } }
Schritt 3
Erstellen Sie eine abstrakte Klasse Artikel-Schnittstelle bietet die Klasse eine Standardfunktion.
Burger.java
public abstract class Burger implementiert Artikel { @Override Öffentlichkeit Verpackung Verpackung () { Rückkehr neue Wrapper (); } @Override public abstract float Preis (); }
ColdDrink.java
public abstract class ColdDrink implementiert Artikel { @Override Öffentlichkeit Verpackung Verpackung () { Rückkehr neue Flasche (); } @Override public abstract float Preis (); }
Schritt 4
Erstellen einer Erweiterung der Entitätsklassen Burger und ColdDrink.
VegBurger.java
public class VegBurger erstreckt Burger { @Override public float Preis () { Rückkehr 25.0f; } @Override public String name () { Rückkehr "Veg Burger"; } }
ChickenBurger.java
public class Chickenburger erstreckt Burger { @Override public float Preis () { Rückkehr 50.5f; } @Override public String name () { Rückkehr "Chicken Burger"; } }
Coke.java
public class Coke erweitert ColdDrink { @Override public float Preis () { Rückkehr 30.0f; } @Override public String name () { Rückkehr "Coke"; } }
Pepsi.java
public class Pepsi erweitert ColdDrink { @Override public float Preis () { Rückkehr 35.0f; } @Override public String name () { return "Pepsi"; } }
Schritt 5
Erstellen Sie ein Meal-Klasse, mit dem Item-Objekt oben definiert.
Meal.java
Import java.util.ArrayList; Import java.util.List; public class Mahlzeit { private List <Item> items = new Arraylist <Item> (); public void addItem (Artikel Artikel) { Items.Add (item); } public float getCost () { Schwimmer Kosten = 0.0f; für (Artikel Artikel: Artikel) { Kosten + = item.price (); } Rückkehr Kosten; } public void showItems () { für (Artikel Artikel: Artikel) { System.out.print ( "Item:" + item.name ()); System.out.print (. ", Verpackung:" + Item.packing () pack ()); System.out.println ( ", Preis:" + item.price ()); } } }
Schritt 6
MealBuilder eine Klasse erstellen, die eigentliche Erbauer verantwortlich Mahlzeit Klassenobjekt zu schaffen.
MealBuilder.java
public class MealBuilder { öffentliche Mahlzeit prepareVegMeal () { Mahlzeit Mahlzeit = new Mahlzeit (); meal.addItem (neu VegBurger ()); meal.addItem (neue Coke ()); Rückkehr Mahlzeit; } öffentliche Mahlzeit prepareNonVegMeal () { Mahlzeit Mahlzeit = new Mahlzeit (); meal.addItem (neu Chickenburger ()); meal.addItem (neue Pepsi ()); Rückkehr Mahlzeit; } }
Schritt 7
BuiderPatternDemo MealBuider verwenden Builder-Modus (Builder Pattern) zu demonstrieren.
BuilderPatternDemo.java
public class BuilderPatternDemo { public static void main (String [] args) { MealBuilder mealBuilder = new MealBuilder (); Mahlzeit vegMeal = mealBuilder.prepareVegMeal (); System.out.println ( "Veg Meal"); vegMeal.showItems (); System.out.println ( "Total Cost:" + vegMeal.getCost ()); Mahlzeit nonVegMeal = mealBuilder.prepareNonVegMeal (); System.out.println ( "\ n \ nNon-Veg Mahlzeit"); nonVegMeal.showItems (); System.out.println ( "Total Cost:" + nonVegMeal.getCost ()); } }
Schritt 8
Stellen Sie sicher, ausgegeben.
veg Mahlzeit Item: Veg Burger, Verpackung: Verpackung, Preis: 25.0 Item: Coca-Cola, Verpackung: Flasche, Preis: 30.0 Gesamtkosten: 55,0 Non-Veg Mahlzeit Item: Huhn-Burger, Verpackung: Verpackung, Preis: 50.5 Item: Pepsi, Verpackung: Flasche, Preis: 35.0 Gesamtkosten: 85,5