Heim  >  Artikel  >  Java  >  Analysieren Sie den Fall eines Builder-Musters in Java

Analysieren Sie den Fall eines Builder-Musters in Java

王林
王林nach vorne
2023-05-10 10:40:151425Durchsuche

Was ist Builder-Muster?

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.

Vorteile

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.

Nachteile

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.

Wissenspunkt

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.

Builder-Modus-Implementierung

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.

Elixier

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;
    }
}

Abstraktes Elixier

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;
    }

}

九 Turn Elixir Danfang

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("原地成仙");
    }
}

Taixuhuashendandanfang

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();
    }
}

test

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());
    }
}

Analysieren Sie den Fall eines Builder-Musters in Java

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen