1. Description de la scène
Le motif du générateur est le même que le modèle d'usine et le modèle d'usine abstrait, et est utilisé pour créer des objets de classe héréditaires.
Mode d'usine: mode de conception Java Mode d'usine
Modèle d'usine abstrait: motif de conception Java motif d'usine abstrait
La différence est que dans le mode d'usine, chaque sous-classe implémente les interfaces et crée des objets sous-classe via la classe d'usine; Alors que dans le mode Builder, chaque sous-classe a sa classe Builder et crée différents objets de classe parent à travers lui et implémente finalement le polymorphisme. En fait, les sous-classes et les classes de parents n'existent pas dans le code.
En prenant l'outil d'acquisition de données de l'instrument comme exemple, en mode d'usine, définissez l'interface "outil d'acquisition de données de l'instrument", définissez les sous-classes "outil d'acquisition de données de fichiers PDF" et "Excel File Data Acquisition Tool" et implémentez l'interface dans la sous-classe. Les objets de sous-classe sont créés via des classes d'usine (qu'il s'agisse d'une classe d'usine statique ou d'une classe d'usine abstraite), et ces objets ont des expressions différentes, c'est-à-dire le polymorphisme.
En mode Builder, définissez la classe parent "outil d'acquisition de données d'instrument", puis utilisez "Classe du constructeur d'outil d'acquisition de données de fichiers PDF" et "Classe de constructeur de l'outil d'acquisition de données de fichiers Excel" pour attribuer différentes méthodes d'expression (attribuer différentes valeurs aux champs, etc.), et enfin atteindre le polymorphisme.
En mode constructeur, le réalisateur est comme un réalisateur. Il appelle le constructeur du constructeur pour compléter la création d'objets de classe. L'appelant peut simplement appeler le directeur, comme le montre la figure ci-dessous:
Bien sûr, le modèle d'usine est littéralement utilisé pour créer des objets, tandis que le modèle de constructeur est littéralement utilisé pour construire différents objets. Les deux peuvent atteindre des fonctions similaires, mais les scénarios d'application des deux peuvent être très différents.
Le modèle d'usine est utilisé pour créer un objet de classe simple, tandis que le modèle Builder est utilisé pour construire un objet de classe complexe. Les informations spécifiques peuvent être apprises de Baidu.
Lors de l'expansion, par exemple, ajoutez la collecte de données de fichiers Word et créez sa classe Builder, qui met en œuvre la création de programmes de collecte de données de fichiers Word; Lorsque vous appelez, vous pouvez l'appeler à l'aide de la classe WordBuilder.
2. Exemple de code
(Parent) Classe:
package lims.designPatterndemo.BuilderDemo; public class equipmentDatacapture {private String filepath; String EquipmentData privé; // 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 = équipementdata; }}Interface du constructeur:
package lims.designpatterndemo.builderdemo; Interface publique EquipmentDatacaptureBuilder {// composant void buildFilePath (); void buildEquipmentData (); // Assemblez l'équipementDatacapture buildEquipmentDatacapture ();}PDF Data Collection Builder Catégorie:
package lims.designpatterndemo.builderdemo; classe publique pdffileCaptureBuilder implémente EquipmentDatacaptureBuilder {// EquipmentDatacapture Capture; // Construire public pdffileCaptureBuilder () {capture = new EquipmentDatacapture (); } // @Override public void buildFilePath () {capture.setFilePath (". Pdf"); } @Override public void buildEquipmentData () {capture.seteQuipmentData ("contenu de fichier PDF"); } @Override public EquipmentDatacapture buildEquipmentDatacapture () {return capture; }}Excel Data Acquisition Builder:
package lims.designPatterndemo.BuilderDemo; classe publique EXCELFILECAPTUREBUILDER implémente EquipmentDatacaptureBuilder {// EquipmentDatacapture Capture; // Construire public exelFelEcaptureBuilder () {capture = new EquipmentDatacapture (); } @Override public void buildFilePath () {capture.setFilePath (". Xlsx"); } @Override public void buildEquipmentData () {capture.seteQuipmentData ("contenu de fichier Excel"); } @Override public EquipmentDatacapture buildEquipmentDatacapture () {return capture; }}Classe de directeur, peut être simplement comprise comme une classe de réalisateur:
Package LIMS.DesignPatterndemo.BuilderDemo; Classe publique EquipmentDatacaptureIrector {public EquipmentDatacapture ConstrucTeQiupmentDatacapture (équipement d'équipementDatacaptureBuilder) {Builder.BuildFilepath (); builder.buildEquipmentData (); Capture d'équipement Datacapture = Builder.BuildEquipmentDatacapture (); retour de capture; }}Exemple de côté appelant:
package lims.designpatterndemo.builderdemo; classe publique Builderdemo {public static void main (String [] args) {equipmentDatacaptureDirector Direcotr = new EquipmentDataCaptureIrctor (); EquipmentDatacaptureBuilder Builder = new PdffileCaptureBuilder (); builder = new ExcElFelEcaptureBuilder (); Capture d'équipement Datacapture = Direcotr.ConstrucTeQiupmentDatacapture (constructeur); System.out.println (capture.getEQUIPmentData ()); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.