1. Descripción de la escena
El patrón del constructor es el mismo que el patrón de fábrica y el patrón de fábrica abstracto, y se usa para crear objetos de clase heredados.
Modo de fábrica: modo de diseño Java Modo de fábrica
Patrón de fábrica abstracta: patrón de fábrica abstracto de patrón de diseño de Java
La diferencia es que en el modo de fábrica, cada subclase implementa interfaces y crea objetos de subclase a través de la clase de fábrica; Mientras que en el modo Builder, cada subclase tiene su clase de constructor y crea diferentes objetos de clase padre a través de él y, en última instancia, implementa el polimorfismo. De hecho, las subclases y las clases de los padres no existen en el código.
Tomar la herramienta de adquisición de datos del instrumento como ejemplo, en modo de fábrica, defina la interfaz "Herramienta de adquisición de datos del instrumento", defina las subclases "Herramienta de adquisición de datos de archivos PDF" y "Herramienta de adquisición de datos de archivos de Excel" e implementa la interfaz en la subclases. Los objetos de subclase se crean a través de clases de fábrica (ya sea una clase de fábrica estática o una clase de fábrica abstracta), y estos objetos tienen expresiones diferentes, es decir, el polimorfismo.
En el modo Builder, defina la clase principal "Herramienta de adquisición de datos de instrumentos" y luego use la "Clase de constructor de la herramienta de adquisición de datos de archivos PDF" y la "Clase de constructor de la herramienta de adquisición de datos de archivos de Excel" para asignar diferentes métodos de expresión (asigne diferentes valores a los campos, etc.), y finalmente alcanzar el polimorfismo.
En el modo Builder, el director es como un director. Llama al constructor del constructor para completar la creación de objetos de clase. La persona que llama puede llamar al director, como se muestra en la figura a continuación:
Por supuesto, el modelo de fábrica se usa literalmente para crear objetos, mientras que el modelo de constructor se usa literalmente para construir diferentes objetos. Los dos pueden lograr funciones similares, pero los escenarios de aplicación de los dos pueden ser muy diferentes.
El modelo de fábrica se usa para crear un objeto de clase simple, mientras que el modelo Builder se usa para crear un objeto de clase complejo. La información específica se puede aprender de Baidu.
Al expandir, por ejemplo, agregue la recopilación de datos de archivos de Word y cree su clase de constructor, que implementa la creación de programas de recopilación de datos de archivos de Word; Al llamar, puede llamarlo usando la clase de WordBuilder.
2. Código de muestra
(Padre) Clase:
paquete lims.designpatterndemo.builderdemo; public class EquipmentDataCapture {String private FilePath; Data de equipos de cadena privada; // 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; }}Interfaz de constructor:
paquete lims.designpatterndemo.builderdemo; Equipment de interfaz públicaDatacaptureBuilder {// componente void buildFilePath (); nulo buildEquipmentData (); // Ensamble EquipmentDataCapture BuildEquipmentDataCapture ();}Categoría de constructor de recopilación de datos PDF:
paquete lims.designpatterndemo.builderdemo; public class PdffilecaptureBuilder implementa equiposdataCaptureBuilder {// EquipmentDataCapture Capture; // construir public pdffileCaptureBuilder () {captura = new EquipmentDataCapture (); } // @Override public void buildFilePath () {Capture.setFilePath (". PDF"); } @Override public void buildEquipmentData () {Capture.setequipmentData ("contenido de archivo PDF"); } @Override Public EquipmentDataCapture buildEquipmentDataCapture () {return Capture; }}Builder de adquisición de datos de Excel:
paquete lims.designpatterndemo.builderdemo; public class ExfrEfLeCaptureBuilder implementa EquipmentDataCaptureBuilder {// EquipmentDataCapture Capture; // construye public exelfLeCaptureBuilder () {captura = new EquipmentDataCapture (); } @Override public void buildFilePath () {Capture.setFilePath (". XLSX"); } @Override public void buildEquipmentData () {Capture.setequipmentData ("contenido de archivo de Excel"); } @Override Public EquipmentDataCapture buildEquipmentDataCapture () {return Capture; }}Clase de director, puede ser simplemente entendido como clase de director:
paquete lims.designpatterndemo.builderdemo; public class EquipmentDataCapturedirector {Public EquipmentDatacapture ConstructEqiUpmentDataCapture (EquipmentDatACaptureBuilder Builder) {Builder.BuildFilepath (); Builder.BuildequipmentData (); EquipmentDataCapture Capture = Builder.BuildequipmentDataCapture (); Captura de retorno; }}Ejemplo del lado de la llamada:
paquete lims.designpatterndemo.builderdemo; public class BuilderDemo {public static void main (string [] args) {EquipeDataCapturedirector direcotr = new EquipmentDataCapturedirector (); EquipeDataCaptureBuilder Builder = new PdffileCaptureBuilder (); builder = new ExfrEfLeCaptureBuilder (); EquipmentDataCapture Capture = Direcotr. System.out.println (captur.getEquipmentData ()); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.