Najlepszy samouczek Model Builder W 2024 r. W tym samouczku możesz dowiedzieć się wprowadzenie,realizacja,
Tryb konstruktor (budowniczy) stosując szereg prostych obiektów zbudować stopniowo na kompleks obiektu. Tego rodzaju wzorców projektowych należy stworzyć schemat, który zapewnia najlepszy sposób tworzenia obiektów.
Klasa Builder jest krok po kroku zbudować ostateczną obiekt. Klasa Builder jest niezależna od innych obiektów.
Zamiar: kompleks budować swoją separację reprezentacji, tak, że ten sam proces budowy może tworzyć różne reprezentacje.
Głównie do rozwiązania: główne rozwiązanie w systemie oprogramowania, czasami stoi "kompleksowy obiekt", aby stworzyć pracę, która jest zwykle pewien algorytm składa się z różnych części sub-object, ze względu na zmiany popytu, różne części tego złożonego zagadnienia często twarzą drastyczna zmiana, ale będą łączyć algorytm jest stosunkowo stabilna.
Kiedy stosować: nie będzie zmienić niektóre z podstawowych składników oraz ich kombinacje stale zmieniających się czasów.
Jak naprawić: zmieniony i niezmieniony rozdzielone.
Klucz Kod: Budowniczy: Tworzenie i podać przykłady, Dyrektor: Zarządzanie zależność zbudowany instancji.
Przykłady zastosowań: 1, przejdź do KFC, hamburgery, cola, frytki, smażone skrzydełka kurczaka itp jest stała, a jej skład ciągle się zmienia, tworząc tak zwany "pakiet".2, JAVA w StringBuilder.
Zalety: 1, niezależny konstruktor, łatwo rozszerzyć.2, łatwe do kontrolowania szczegóły ryzyka.
Wady: 1, produkt musi mieć ze sobą wspólnego, zakres jest ograniczony.2. Kompleks zmian wewnętrznych, nie będzie wiele klas budowlanych.
Scenariusze użycia: 1, należy wygenerować obiekt ma złożoną strukturę wewnętrzną.2, powinny być generowane wewnątrz właściwości obiektu samego siebie zależne.
Uwaga: Różnica między modelem zakładu jest: model Builder jest bardziej związane z kolejność montażu poszczególnych części.
Zakładamy, że fast-food restauracja przypadku biznesu, w której pakiet może być typowy hamburger (Burger) i kieliszek zimnego (zimny napój). Burger (Burger) może być hamburgery wegetariańskie (Veg Burger) lub hamburgery z kurczaka (Chicken Burger), są one zapakowane w podajniku. Zimny (napoje zimne) może być Coca-Cola (koks) i Pepsi (Pepsi), są one pakowane w butelki.
Będziemy tworzyć reprezentację produktów spożywczych (takich jak hamburgery i zimne) interfejsuElementinterfejsu i wdrożenie podmiot klasyelement,a jednostka interfejs i implementacja reprezentujepakowaniainterfejsOpakowania nażywność, Hamburg to pakiet w podajniku jest zimna pakowane w butelki.
Następnie tworzymyklasy MąkaArrayList iposiłekdo tworzenia różnych typów obiektów poprzez połączeniepozMealBuilder zpkt.BuilderPatternDemo pokazujemy użycie klasyMealBuilderstworzyćposiłek.
Tworzy interfejs wejścia i pakowanie żywności żywności.
Item.java
Element {public interface Nazwa public String (); Pakowanie publicznego pakowania (); Cena public float (); }
Packing.java
Pakowanie {public interface Pakiet public String (); }
Opakowanie stworzyć podmiot klas implementować interfejs.
Wrapper.java
narzędzi public class Wrapper {pakowania @Override Pakiet public String () { w obie strony "Otulina"; } }
Bottle.java
narzędzia do pakowania butelek public class { @Override Pakiet public String () { w obie strony "Butelka"; } }
Załóż abstrakcyjny interfejs klasy produkt, klasa udostępnia funkcję domyślnego.
Burger.java
public abstract class Burger realizuje item { @Override Pakowanie publicznego pakowania () { powrót nowego Wrapper (); } @Override public abstract cena float (); }
ColdDrink.java
public abstract class ColdDrink realizuje item { @Override Pakowanie publicznego pakowania () { powrót Nowa butelka (); } @Override public abstract cena float (); }
Tworzenie rozszerzenia Burger i ColdDrink podmiot klas.
VegBurger.java
public class VegBurger rozciąga Burger { @Override Cena public float () { powrót 25.0f; } @Override Nazwa public String () { w obie strony "Veg Burger"; } }
ChickenBurger.java
public class Chickenburger rozciąga Burger { @Override Cena public float () { powrót 50.5f; } @Override Nazwa public String () { w obie strony "Chicken Burger"; } }
Coke.java
public class Coke rozciąga ColdDrink { @Override Cena public float () { powrót 30.0f; } @Override Nazwa public String () { w obie strony "Coke"; } }
Pepsi.java
public class Pepsi rozciąga ColdDrink { @Override Cena public float () { powrót 35.0f; } @Override Nazwa public String () { w obie strony "Pepsi"; } }
Tworzenie klasy Mąka z obiektem towaru określonego powyżej.
Meal.java
import java.util.ArrayList; import java.util.List; {public class Meal private List <Element> items = new ArrayList <item> (); public void addItem (pozycja pozycja) { Items.Add (pozycja); } Pływak publicznego getCost () { Koszt pływak = 0.0f; dla (Sztuk: pozycje) { Koszt + = item.price (); } zwrotu kosztów; } public void showItems () { dla (Sztuk: pozycje) { System.out.print ( "Item:" + item.name ()); System.out.print (. "Pakowanie:" + Item.packing () paczka ()); System.out.println ( "Cena" + item.price ()); } } }
MealBuilder utworzyć klasę, rzeczywisty konstruktor odpowiedzialny za tworzenie klasy Mąka obiekt.
MealBuilder.java
{public class MealBuilder Posiłek prepareVegMeal publicznego () { Mąka Mąka posiłek = new (); meal.addItem (New VegBurger ()); meal.addItem (New Coke ()); powrót posiłek; } Posiłek prepareNonVegMeal publicznego () { Mąka Mąka posiłek = new (); meal.addItem (nowa Chickenburger ()); meal.addItem (nowa Pepsi ()); powrót posiłek; } }
BuiderPatternDemo używać MealBuider wykazać trybu startowego (budowniczy).
BuilderPatternDemo.java
{public class BuilderPatternDemo public static void main (String [] args) { MealBuilder mealBuilder = new MealBuilder (); Mąka vegMeal = mealBuilder.prepareVegMeal (); System.out.println ( "Veg Meal"); vegMeal.showItems (); System.out.println ( "Całkowity koszt:" + vegMeal.getCost ()); Mąka nonVegMeal = mealBuilder.prepareNonVegMeal (); System.out.println ( "\ n \ nNon-Veg Meal"); nonVegMeal.showItems (); System.out.println ( "Całkowity koszt:" + nonVegMeal.getCost ()); } }
Sprawdź, czy wyjście.
Veg Meal Pozycja: Veg Burger, Opakowanie: Wrapper, Cena: 25,0 Pozycja: Koks, Opakowanie: Butelka, Cena: 30,0 Całkowity koszt: 55,0 Non-Veg Meal Pozycja: Chicken Burger, Opakowanie: Wrapper, Cena: 50,5 Pozycja: Pepsi, Opakowanie: Butelka, Cena: 35.0 Całkowity koszt: 85,5