1. Descrição da cena
O padrão do construtor é o mesmo que o padrão de fábrica e o padrão abstrato de fábrica e é usado para criar objetos de classe herdados.
Modo de fábrica: modo de fábrica de design java
Padrão de fábrica abstrato: Java Design Pattern Abstract Factory Pattern
A diferença é que, no modo de fábrica, cada subclasse implementa interfaces e cria objetos de subclasse através da classe de fábrica; Enquanto no modo Builder, cada subclasse tem sua classe Builder e cria diferentes objetos de classe pai através dela e, finalmente, implementa o polimorfismo. De fato, subclasses e classes de pais não existem no código.
Tomando a ferramenta de aquisição de dados do instrumento como exemplo, no modo de fábrica, defina a interface "Ferramenta de aquisição de dados do instrumento", defina as subclasses "Ferramenta de aquisição de dados de arquivos PDF" e "Ferramenta de aquisição de dados do Arquivo Excel" e implemente a interface na subclasse. Os objetos de subclasse são criados através de classes de fábrica (seja uma classe estática de fábrica ou uma classe abstrata de fábrica), e esses objetos têm expressões diferentes, ou seja, polimorfismo.
No modo Builder, defina a classe pai "Ferramenta de aquisição de dados de instrumentos" e use "Classe Builder de Ferramenta de Aquisição de Dados de Arquivos PDF" e "Classe Builder de Ferramenta de Aquisição de Dados de Arquivos do Excel" para atribuir diferentes métodos de expressão (atribuir valores diferentes aos campos, etc.) e, finalmente, alcançar o polimorfismo.
No modo Builder, o diretor é como um diretor. Ele chama o construtor do construtor para concluir a criação de objetos de classe. O chamador pode apenas ligar para o diretor, conforme mostrado na figura abaixo:
Obviamente, o modelo de fábrica é literalmente usado para criar objetos, enquanto o modelo do construtor é literalmente usado para criar objetos diferentes. Os dois podem obter funções semelhantes, mas os cenários de aplicação dos dois podem ser muito diferentes.
O modelo de fábrica é usado para criar um objeto de classe simples, enquanto o modelo do construtor é usado para criar um objeto de classe complexo. As informações específicas podem ser aprendidas no Baidu.
Ao expandir, por exemplo, adicione a coleta de dados do arquivo do Word e crie sua classe Builder, que implementa a criação de programas de coleta de dados do Word File; Ao ligar, você pode chamá -lo usando a classe WordBuilder.
2. Código de amostra
Classe (pai):
pacote lim.designpatterndemo.builderdemo; classe pública EquipmentDataCapture {private string filepath; Data de equipamento de cordas privadas; // 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; }}Interface do construtor:
pacote lim.designpatterndemo.builderdemo; interface pública EquipmentDataCaptureBuilder {// componente void BuildFilePath (); Void BuildEqueCipmentData (); // Assemble EquipmentDataCapture BuildECIPmentDataCapture ();}Categoria de construtor de coleta de dados em PDF:
pacote lim.designpatterndemo.builderdemo; classe pública pdffilecapturebuilder implementa o equipamento DataCaptureBuilder {// EquipmentDataCapture Capture; // Construa public pdffilecaptureBuilder () {Capture = new EquipmentDataCapture (); } // @Override public void BuildFilePath () {Capture.SetFilePath (". PDF"); } @Override public void BuildECIPmentData () {Capture.seteQuipmentData ("Conteúdo do arquivo pdf"); } @Override Public EquipmentDatAcApture BuildECIPmentDataCapture () {return Capture; }}Builder de aquisição de dados do Excel:
pacote lim.designpatterndemo.builderdemo; classe pública ExcelfilecaptureBuilder implementa EquipmentDataCaptureBuilder {// EquipmentDataCapture Capture; // Construa public ExcelfLeCaptureBuilder () {Capture = new EquipmentDatAcApture (); } @Override public void BuildFilePath () {Capture.SetFilePath (". Xlsx"); } @Override public void BuildECIPmentData () {Capture.seteQuipmentData ("Conteúdo do arquivo do Excel"); } @Override Public EquipmentDatAcApture BuildECIPmentDataCapture () {return Capture; }}Diretor Class, pode ser simplesmente entendido como Diretor Class:
pacote lim.designpatterndemo.builderdemo; classe pública EquipmentDatAcaptureRector {public EquipmentDataCapture ConstructeqiUpmentDataCapture (EquipmentDatacAptureBuilder Builder) {Builder.buildFilePath (); builder.buildECIPmentData (); EquipmentDataCapture Capture = Builder.BuildECIPmentDataCapture (); Captura de retorno; }}Exemplo do lado chamando:
pacote lim.designpatterndemo.builderdemo; public class BuilderDemo {public static void main (string [] args) {EquipmentDATACAPTURECTERECTERIRECOTR = new EquipmentDATACAPTUREDIRECTER (); EquipmentDATACAPTUREBUILLER Builder = new PdffilEcaptureBuilder (); construtor = new ExcelfilEcaptureBuilder (); EquipmentDataCapture Capture = Direcotr.ConstrucTeqiUpmentDataCapture (Builder); System.out.println (capture.getequipmentData ()); }}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.