1. Descrição da cena
Conectado com "Java Design Pattern (i) Padrão de fábrica"
Uma desvantagem do modelo de fábrica é que ele destrói o princípio do fechamento da classe. Por exemplo, se você precisar adicionar coleta de dados para arquivos do Word, siga as seguintes etapas:
A etapa 2 modificou a classe de fábrica. Se a classe de fábrica precisar ser modificada para cada classe de implementação adicional, isso não é razoável.
A solução é usar classes abstratas de fábrica, criar sua classe de fábrica para cada classe de implementação e adicionar interfaces de fábrica para que cada classe de fábrica implemente a interface.
Depois de usar a fábrica abstrata, as etapas acima são alteradas para:
Após a modificação, como a classe de fábrica é abstraída e a interface da fábrica é definida, o código original não é mais necessário para ser modificado ao adicionar a nova classe de implementação e a implementação original não é destruída.
Como mostrado na figura abaixo:
2. Código de amostra
Interface de aquisição de dados do instrumento:
pacote lim.designpatterndemo.abstractFactoryDemo; interface pública EquipmentDataCapture {public String Capture (string filepath);}Classe de coleta de arquivos PDF:
pacote lim.designpatterndemo.abstractFactoryDemo; classe pública PDFFFILECAPTURA implementa EquipmentDataCapture {@Override public String Capture (String filepath) {return "PDF Arquivo Conteúdo"; }}Classe de coleta de arquivos do Excel:
pacote lim.designpatterndemo.abstractFactoryDemo; classe pública Excelfilecapture implementa EquipmentDataCapture {@Override public String Capture (String filepath) {return "Excel File Content"; }}Resumo Factory, isto é, interface de fábrica:
pacote lims.designpatterndemo.abstractFactoryDemo; interface pública EquipmentDataCaptureFactory {public EquipmentDataCapture getCapture (); }Fábrica de Coleta de Arquivos PDF:
pacote lim.designpatterndemo.abstractFactoryDemo; public class PdffilecApture Factory implementa EquipmentDataCaptureFactory {@Override public EquipmentDataCapture getCapture () {Return New PdFFilecApture (); }}Fábrica de coleta de arquivos do Excel:
pacote lim.designpatterndemo.abstractFactoryDemo; classe pública ExcelfilecApture Factory implementa EquipmentDataCaptureFactory {@Override public EquipmentDataCapture getCapture () {return new Excelfilecapture (); }}Ligue para o exemplo:
pacote lim.designpatterndemo.abstractFactoryDemo; public class AbstractFactoryDemo {public static void main (string [] args) {EquipmentDataCaptureFactory Fabric = novo pdffilecaptureFactory (); Fabric = novo ExcelfilecAptureFactory (); EquipmentDATACAPTURE Capture = Fabric.getcapture (); String fileContent = capture.capture (""); System.out.println (FileContent); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.