1. Conceito do modelo do construtor
Definição: separe uma construção complexa de objeto de sua representação para que o mesmo processo de construção possa criar representações diferentes;
Núcleo: Construção e representação separadas, diferentes representações são diferentes dos modelos de fábrica abstrata ao construir:
(1) Semelhante ao padrão de fábrica abstrato, porque também pode criar objetos complexos. A principal diferença é que o modelo do construtor se concentra na construção de um objeto complexo passo a passo, com foco na ordem do tipo de peça e do processo de montagem. O modelo de fábrica abstrato se concentra em várias séries de objetos de produto (simples ou complexos). O padrão do construtor retorna o produto na última etapa e, para a fábrica abstrata, o produto retorna imediatamente.
(2) No modo construtor, há um supervisor que gerencia o construtor. O usuário entra em contato com o supervisor e o supervisor entra em contato com o construtor e finalmente recebe o produto. Ou seja, o modelo de construção pode forçar um processo de construção passo a passo.
2. Seu papel
(1) Função do construtor abstrato: esse papel é usado para regular vários componentes do produto e abstrair TI, que geralmente é independente da lógica da aplicação.
(2) Função do construtor de concreto:
Essa função implementa todos os métodos definidos no construtor abstrato e retorna uma instância de produto embutida.
(3) Função do produto (produto):
Esse papel é um objeto complexo na construção e haverá mais de uma categoria de produto em um sistema. Esses produtos não têm necessariamente interfaces públicas e podem ser completamente relacionadas.
(4) Função do diretor:
O personagem é responsável por organizar a ordem dos módulos existentes e depois dizer ao construtor do construtor para começar a construir.
3. Exemplo
Builder de interface pública {void BuildParta (); void BuildPartB (); void BuildPartC (); } public class BuilderImpl implementa o construtor {@Override public void BuildParta () {System.out.println ("Build Part A"); } @Override public void BuildPartB () {System.out.println ("Build Part B"); } @Override public void BuildPartC () {System.out.println ("Build Part C"); }} public class BuilderImpl2 implementa o construtor {@Override public void BuildParta () {System.out.println ("Build Part AA"); } @Override public void BuildPartB () {System.out.println ("Construir parte BB"); } @Override public void BuildPartC () {System.out.println ("Construir parte CC"); }} / ** * Comandante: Guia como construir * Builder de combinação */ Diretor de classe pública {Private Builder Builder; Diretor público (construtor construtor) {this.builder = construtor; } / *** Método de construção: define o processo de construção* Se forem necessários outros processos para implementá -lo, você poderá um novo diretor de comandante* / public void construct () {System.out.println ("Diretor Commands Builder for Construction"); construtor.BuildParta (); construtor.buildPartB (); construtor.buildPartc (); }} Classe Public Director2 {Builder Private Builder; Public Director2 (Builder Builder) {this.builder = construtor; } / *** Método de construção: define o processo de construção* Se forem necessários outros processos para implementá -lo, você poderá novo diretor de comandante* / public void construct () {System.out.println ("Diretor2 Comandos Builder for Construction"); construtor.buildPartB (); construtor.buildPartc (); construtor.BuildParta (); }} classe pública teste {public static void main (string [] args) {construtor construtor = new BuilderImpl (); Diretor Diretor = novo diretor (construtor); / * * O mesmo processo de construção, módulos diferentes (BuildParta, BuildPartb, BuildPartc), implementação de uma nova construtora * Processos de construção diferentes, novos processos de construção de um diretor * diferentes, implementação de módulos diferentes, novo diretor, novo construtor */ diretor.construct (); System.out.println (""); Construtor construtor2 = new BuilderImpl2 (); Diretor Diretor2 = Novo Diretor (Builder2); Diretor2.Construct (); System.out.println (""); Construtor build3 = new BuilderImpl2 (); Diretor2 Diretor3 = Novo Diretor2 (Builder3); Diretor3.Construct (); }}Imprimir:
Diretor Builder de Comando para Construção Construção Peças de Construção Uma Parte da Construção B Construção Parte C Construtor de comando do diretor para construção Peças de construção AA Parte da construção BB Parte do CC Diretor2 Construtor de comando para peças de construção BB Parte da construção CC Parte AA AA
4. Vantagens e desvantagens (1) Vantagens:
A. pode permitir que você altere a representação interna do produto.
B. encapsular o Código de Edifício e Representante.
C. Forneça controle sobre as etapas além do processo de construção.
(2) Desvantagens:
R. É necessário criar uma variedade de diferentes tipos de produtos individualmente concreta.
5. Cenários de uso:
(1) Quando o algoritmo para criar objetos complexos deve ser independente dos componentes do objeto e como eles são montados.
(2) Quando o processo de construção deve permitir que o objeto construído tenha representações diferentes (o mesmo método, ordem de execução diferente e resultados diferentes são produzidos).