Die Definition des Builder-Musters: bezieht sich auf die Trennung der Konstruktion eines komplexen Objekts von seiner Darstellung, sodass derselbe Konstruktionsprozess unterschiedliche Darstellungen erstellen kann wird als Builder-Muster bezeichnet. Es zerlegt ein komplexes Objekt in mehrere einfache Objekte und baut es dann Schritt für Schritt auf. Es trennt Veränderung von Unveränderlichkeit, das heißt, die Komponenten des Produkts bleiben unverändert, aber jeder Teil kann flexibel ausgewählt werden.
1. Gute Kapselung, Trennung von Konstruktion und Präsentation.
2. Es verfügt über eine gute Skalierbarkeit und jeder einzelne Builder ist unabhängig voneinander, was der Entkopplung des Systems förderlich ist.
3. Der Kunde muss die Details der internen Zusammensetzung des Produkts nicht kennen. Der Entwickler kann den Erstellungsprozess schrittweise verfeinern, ohne dass dies Auswirkungen auf andere Module hat, was die Kontrolle detaillierter Risiken erleichtert.
1 Die Bestandteile des Produkts müssen gleich sein, was seinen Einsatzbereich einschränkt.
2. Wenn die internen Änderungen des Produkts kompliziert sind und die internen Änderungen des Produkts auftreten, muss der Hersteller auch gleichzeitig Änderungen vornehmen, was in Zukunft höhere Wartungskosten verursachen wird.
Der Builder-Modus und der Factory-Modus haben unterschiedliche Schwerpunkte: Der Builder-Modus konzentriert sich auf den Montageprozess von Teilen, während der Factory-Methodenmodus dem mehr Aufmerksamkeit schenkt Teileerstellungsprozess, aber beide können kombiniert werden.
Fall: Miracle Doctor Doudou Alchemy
Produktrolle (Produkt): Pille
Abstract Builder : Abstract Danfang
Concrete Builder: Concrete Danfang
Direktor: Miracle Doctor Doudou
神medic Doudou verfeinert das Neun-Runden-Elixier und die Taixu-Magie Elixier
Hinweis: Um Ärger zu vermeiden, enthält der Inhalt des hier erwähnten Elixiers nur den Namen und die Wirkung des Elixiers und es gibt kein Material oder ähnliches.
Die Elixierklasse deklariert zwei Attribute: den Namen und die Wirkung der Alchemie
public class Dan { /* cailiao 丹药的名称 danhuo 丹药的效果*/ private String name; private String xiaoguo; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getXiaoguo() { return xiaoguo; } public void setXiaoguo(String xiaoguo) { this.xiaoguo = xiaoguo; } }
Die abstrakte Klasse, ein neues Elixierobjekt, deklariert zwei abstrakte Methoden zum Benennen des Elixiers und Zuweisen von Elixiereffekten sowie eine Methode zum Generieren von Elixieren.
//抽象丹方 abstract class DanFang { Dan dan = new Dan(); public abstract void name(); public abstract void xiaoguo(); public Dan getDan() { return dan; } }
Die spezifische Danfang-Klasse erbt die Danfang-Klasse und implementiert zwei abstrakte Methoden.
//九转仙丹丹方 public class JiuZhuan extends DanFang { @Override public void name() { dan.setName("九转仙丹"); } @Override public void xiaoguo() { dan.setXiaoguo("原地成仙"); } }
Die spezifische Danfang-Klasse erbt die Danfang-Klasse und implementiert zwei abstrakte Methoden.
//太虚化神丹丹方 public class Taixu extends DanFang { @Override public void name() { dan.setName("太虚化神丹"); } @Override public void xiaoguo() { dan.setXiaoguo("意念化神"); } }
Deklarieren Sie ein Elixir-Attribut, eine Konstruktormethode mit Parametern und eine Alchemiemethode.
public class DouDou { private final DanFang danLu; public DouDou(DanFang danLu) { this.danLu = danLu; } //炼丹方法 public Dan lian() { //放入材料 danLu.name(); //释放丹火 danLu.xiaoguo(); //成丹 return danLu.getDan(); } }
Zwei Pillen verfeinern.
public class Demo { public static void main(String[] args) { //炼制九转仙丹 //new一个九转仙丹的丹方 DanFang jiu = new JiuZhuan(); //把丹方给豆豆 DouDou dou = new DouDou(jiu); //炼丹生成丹药 Dan dan = dou.lian(); System.out.printf("丹药名称:%s 丹药效果:%s", dan.getName(), dan.getXiaoguo()); System.out.println(); //炼制太虚化神丹 //new一个九转仙丹的丹方 DanFang tai = new Taixu(); //把丹方给豆豆 DouDou dous = new DouDou(tai); //炼丹生成丹药 Dan dans = dous.lian(); System.out.printf("丹药名称:%s 丹药效果:%s", dans.getName(), dans.getXiaoguo()); } }
Das obige ist der detaillierte Inhalt vonAnalysieren Sie den Fall eines Builder-Musters in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!