1. Szene Beschreibung
Das Builder -Muster entspricht dem Fabrikmuster und dem abstrakten Fabrikmuster und wird verwendet, um vererbte Klassenobjekte zu erstellen.
Werksmodus: Java Design Mode Factory -Modus
Zusammenfassung Fabrikmuster: Java -Designmuster Abstraktes Werksmuster
Der Unterschied besteht darin, dass im Werksmodus jede Unterklasse Schnittstellen implementiert und Subklassenobjekte durch die Fabrikklasse erstellt. Während im Builder -Modus hat jede Unterklasse ihre Builder -Klasse und erstellt durch sie verschiedene Objekte der Elternklasse und implementiert letztendlich Polymorphismus. Tatsächlich existieren Unterklassen und Elternklassen im Code nicht.
Definieren Sie das Instrumentendatenerfassungs -Tool als Beispiel im Werksmodus das Schnittstellen -Tool "Instrumentendatenerfassung", definieren Sie die Unterklassen "PDF -Dateidatenerfassungs -Tool" und "Excel -Dateidatenerfassungs -Tool" und implementieren Sie die Schnittstelle in der Unterklasse. Subklassenobjekte werden über Fabrikklassen erstellt (unabhängig davon, ob es sich um eine statische Fabrikklasse oder eine abstrakte Fabrikklasse handelt), und diese Objekte haben unterschiedliche Ausdrücke, dh Polymorphismus.
Definieren Sie im Builder -Modus die übergeordnete Klasse "Instrumentendatenerfassungs -Tool" und verwenden Sie dann "Builder -Klasse des PDF -Dateidatenerfassungs -Tools" und "Builder -Klasse von Excel -Dateidatenerfassungs -Tool", um verschiedene Expressionsmethoden zuzuweisen (Feldern usw. unterschiedliche Werte usw. zuweisen) und schließlich den Polymorphismus zu erreichen.
Im Builder -Modus ist Regisseur wie ein Regisseur. Es ruft den Bauherrn auf, um die Erstellung von Klassenobjekten zu vervollständigen. Der Anrufer kann einfach den Direktor anrufen, wie in der folgenden Abbildung gezeigt:
Natürlich wird das Fabrikmodell buchstäblich zum Erstellen von Objekten verwendet, während das Builder -Modell buchstäblich zum Erstellen verschiedener Objekte verwendet wird. Die beiden können ähnliche Funktionen erzielen, aber die Anwendungsszenarien der beiden können sehr unterschiedlich sein.
Das Werksmodell wird verwendet, um ein einfaches Klassenobjekt zu erstellen, während das Builder -Modell zum Erstellen eines komplexen Klassenobjekts verwendet wird. Die spezifischen Informationen können von Baidu gelernt werden.
Fügen Sie beispielsweise bei der Erweiterung der Erfassung von Word -Dateidaten hinzu und erstellen Sie seine Builder -Klasse, die die Erstellung von Programmen zur Erstellung von Word -Dateien implementiert. Beim Anruf können Sie es mit der WordBuilder -Klasse anrufen.
2. Beispielcode
(Eltern) Klasse:
Paket lim.designPatternDemo.builderdemo; öffentliche Klasse EquipmentDatacapture {private String filepath; private String EquipmentData; // public String getFilePath () {return this.filepath; } public void setfilepath (String filepath) {this.filepath = filepath; } public String getequipmentData () {return this.equipmentData; } public void setEquipmentData (String EquipmentData) {this.equipmentData = EquipmentData; }}Builder -Schnittstelle:
Package Lims.DesignPatternDemo.builderdemo; öffentliche Schnittstelle AusrüstungDatacaptureBuilder {// Komponente void BuildFilepath (); void BuildequipmentData (); // EquipmentDatacapture BuildequipmentDatacapture () zusammenstellen;};PDF -Datenerfassungskategorie: Kategorie:
Package Lims.DesignPatternDemo.builderdemo; öffentliche Klasse pdffilecaptureBuilder implementiert EquipmentDatacaptureBuilder {// EquipmentDatacapture Capture; // public pdffilecaptureBuilder () {capture = new EquipmentDatacapture () konstruieren; } // @Override public void BuildFilepath () {capture.setFilepath (". Pdf"); } @Override public void buildequipmentData () {capture.setequipmentData ("PDF -Dateiinhalt"); } @Override public EquipmentDatacapture BuildequipmentDatacapture () {return capture; }}Excel Data Acquisition Builder:
Package Lims.DesignPatternDemo.builderdemo; öffentliche Klasse ExcelfileCaptureBuilder implementiert EquipmentDatacaptureBuilder {// EquipmentDatacapture Capture; // public excelfilecaptureBuilder () {capture = new EquipmentDatacapture () konstruieren; } @Override public void BuildFilepath () {Capture.setFilePath (". XLSX"); } @Override public void buildequipmentData () {capture.setequipmentData ("Excel -Dateiinhalte"); } @Override public EquipmentDatacapture BuildequipmentDatacapture () {return capture; }}Director -Klasse kann einfach als Director -Klasse verstanden werden:
Package Lims.DesignPatternDemo.builderdemo; öffentliche Klasse EquipmentDatacapturector {public EquipmentDatacapture constreateqiupmentDatacapture (EquipmentDatacaptureBuilder Builder) {builder.buildFilepath (); builder.buildequipmentData (); EquipmentDatacapture Capture = Builder.BuildequipmentDatacapture (); Rückfahrerfassung; }}Nebenbei aufrufen:
Paket lim.DesignPatternDemo.builderdemo; öffentliche Klasse BuilderDemo {public static void main (String [] args) {EquipmentDatacapturector Direcotr = new EquipmentDatacapturedirector (); EquipmentDatacaptureBuilder Builder = new pdffilecaptureBuilder (); builder = new excelfilecaptureBuilder (); EquipmentDatacapture Capture = Direcotr.ConstruteEqiUpmentDatacapture (Builder); System.out.println (capture.getEquipmentData ()); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.