Latest web development tutorials

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.

Die Erbauer UML-Diagramm

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