1. Descripción de la escena
Conectado con "Patrón de diseño de Java (I) Patrón de fábrica"
Una desventaja del modelo de fábrica es que destruye el principio de cerramiento de la clase. Por ejemplo, si necesita agregar recopilación de datos para archivos de Word, siga los siguientes pasos:
El paso 2 modificó la clase de fábrica. Si la clase de fábrica debe modificarse para cada clase de implementación adicional, esto no es razonable.
La solución es usar clases de fábrica abstractas, crear su clase de fábrica para cada clase de implementación y agregar interfaces de fábrica para que cada clase de fábrica implementa la interfaz.
Después de usar la fábrica abstracta, los pasos anteriores se cambian a:
Después de la modificación, dado que la clase de fábrica se abstrae y la interfaz de fábrica está definida, el código original ya no es necesario modificar al agregar la nueva clase de implementación, y la implementación original no se destruye.
Como se muestra en la figura a continuación:
2. Código de muestra
Interfaz de adquisición de datos de instrumentos:
paquete lims.designpatterndemo.abstractFactoryDemo; public interfaz EquipmentDataCapture {public String Capture (String FilePath);}Clase de recopilación de archivos PDF:
paquete lims.designpatterndemo.abstractFactoryDemo; public class Pdffilecapture implementa EquipmentDataCapture {@Override public String Capture (String FilePath) {return "PDF File Content"; }}Clase de recopilación de archivos de Excel:
paquete lims.designpatterndemo.AbstractFactoryDemo; public class ExcLferLecapture implementa EquipmentDataCapture {@Override public String Capture (String FilePath) {return "Excel File Content"; }}Resumen de fábrica, es decir, interfaz de fábrica:
paquete lims.designpatterndemo.AbstractFactoryDemo; Equipo de interfaz pública DataCaptureFactory {public EquipmentDataCapture getCapture (); }Fábrica de recopilación de archivos PDF:
paquete lims.designpatterndemo.AbstractFactoryDemo; public class PdffilecaptureFactory implementos EquipmentDataCapTureFactory {@Override public EquipmentDataCapture getCapture () {return nuevo pdffileCapture (); }}Fábrica de recopilación de archivos de Excel:
paquete lims.designpatterndemo.AbstractFactoryDemo; public class ExfrELFILECAPTUREFACTORY Implementos EquipmentDataCaptureFactory {@Override Public EquipmentDataCapture getCapture () {return New ExcEfLeCapTure (); }}Ejemplo de llamada:
paquete lims.designpatterndemo.abstractFactoryDemo; public class abstractFactoryDemo {public static void main (string [] args) {EquipeDataCaptureFactory Fabric = new PdffileCaptureFactory (); tela = new ExolfilecaptureFactory (); EquipmentDataCapture Capture = Fabric.getCapture (); Cadena fileContent = captur.capture (""); System.out.println (fileContent); }}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.