1. Szene Beschreibung
Verbunden mit "Java -Designmuster (i) Fabrikmuster"
Ein Nachteil des Fabrikmodells besteht darin, dass es das Prinzip der Schließung der Klasse zerstört. Wenn Sie beispielsweise die Datenerfassung für Word -Dateien hinzufügen müssen, führen Sie die folgenden Schritte aus:
Schritt 2 modifizierte die Fabrikklasse. Wenn die Fabrikklasse für jede zusätzliche Implementierungsklasse geändert werden muss, ist dies unangemessen.
Die Lösung besteht darin, abstrakte Fabrikklassen zu verwenden, ihre Werksklasse für jede Implementierungsklasse zu erstellen und Werksoberflächen hinzuzufügen, damit jede Fabrikklasse die Schnittstelle implementiert.
Nach der Verwendung der abstrakten Fabrik werden die obigen Schritte in:
Nach der Änderung ist der ursprüngliche Code nicht mehr erforderlich, da die Fabrikklasse abstrahiert und die Fabrikschnittstelle definiert ist, wenn die neue Implementierungsklasse hinzugefügt wird, und die ursprüngliche Implementierung wird nicht zerstört.
Wie in der Abbildung unten gezeigt:
2. Beispielcode
Schnittstelle für Instrumentendatenerfassungen:
Package Lims.DesignPatternDemo.abstractFactoryDemo; öffentliche Schnittstelle AusrüstungDatacapture {public String Capture (String -Filepath);}PDF -Dateisammlungsklasse:
Paket lim.DesignPatternDemo.abstractFactoryDemo; öffentliche Klasse PDFFILeCapture implementiert EquipmentDatacapture {@Override public String capture (String filepath) {return "PDF -Dateiinhalte"; }}Excel -Datei -Sammlungsklasse:
Package Lims.DesignPatternDemo.abstractFactoryDemo; öffentliche Klasse ExcelfileCapture implementiert EquipmentDatacapture {@Override public String Capture (String filepath) {return "Excel -Dateiinhalte"; }}Abstract Factory, d. H. Fabrikschnittstelle:
Package Lims.DesignPatternDemo.abstractFactoryDemo; öffentliche Schnittstelle EquipmentDatacaptureFactory {public EquipmentDatacapture getCapture (); }PDF -Dateisammlungsfabrik:
Package Lims.DesignPatternDemo.abstractFactoryDemo; öffentliche Klasse pdffilecaptureFactory implementiert EquipmentDatacaptureFactory {@Override public EquipmentDatacapture getCapture () {Neue pdffilecapture (); }}Excel -Dateisammlung Fabrik:
Package Lims.DesignPatternDemo.abstractFactoryDemo; Public Class ExcelfileCaptureFactory implementiert EquipmentDatacaptureFactory {@Override public EquipmentDatacapture getCapture () {Neue Excelfilecapture (); }}Aufrufen Beispiel:
package lim.designPatternDemo.abstractFactoryDemo; öffentliche Klasse AbstractFactoryDemo {public static void main (String [] args) {EquipmentDatacaptureFactory Fabric = new pdffilecaptureFactory (); Fabric = New ExcelfileCaptureFactory (); EquipmentDatacapture Capture = Fabric.getCapture (); String fileContent = capture.capture (""); System.out.println (filecontent); }}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.