introduzir
Nos sistemas de software, às vezes enfrentamos a criação de "um objeto complexo", que geralmente é composto por subobjetos de cada parte usando certos algoritmos; Devido a mudanças nos requisitos, as várias partes desse objeto complexo geralmente enfrentam mudanças drásticas, mas o algoritmo que as combina é realmente relativamente estável. Como lidar com essa mudança? Como fornecer um "mecanismo de encapsulamento" para isolar as mudanças em "cada parte de objetos complexos", a fim de manter o "algoritmo de construção estável" no sistema de mudar com as necessidades? É isso que o modelo do construtor deve ser mencionado.
O padrão do construtor pode separar a construção de um objeto complexo de sua representação, para que o mesmo processo de construção possa criar representações diferentes. Ou seja, se usarmos o modo Builder, o usuário precisa especificar os tipos a serem construídos para obtê -los, e o processo de construção específico e os detalhes não precisam ser conhecidos.
texto
Esse padrão é relativamente simples. Por favor, insira o código primeiro e depois explique -o
A cópia do código é a seguinte:
função getbeerbyId (id, retorno de chamada) {
// Use o ID para solicitar dados e retornar os dados.
asyncrequest ('get', 'beer.uri? id =' + id, function (resp) {
// Resposta de chamadas de retorno de chamada
retorno de chamada (resp.Responsetext);
});
}
var el = document.QuerySelector ('#teste');
el.addeventListener ('clique', getbeerbyidbridge, false);
função getbeerbyidbridge (e) {
getBeerbyId (this.id, function (cerveja) {
console.log ('cerveja solicitada:' + cerveja);
});
}
De acordo com a definição do construtor, a fase da tabela é um retorno de chamada, ou seja, como exibir e processar os dados após obtê -los depende da função de retorno de chamada. Da mesma forma, a função de retorno de chamada não precisa prestar atenção em como os dados são obtidos ao processar os dados. O mesmo exemplo também pode ser visto no método Ajax de jQuery. Existem muitas funções de retorno de chamada (como sucesso, retorno de chamada de erro etc.) e o principal objetivo é separar responsabilidades.
Vamos também ter outro exemplo de jQuery:
A cópia do código é a seguinte:
$ ('<div class = "foo"> bar </div>');
Precisamos apenas passar nos caracteres HTML a serem gerados, sem considerar como o objeto HTML específico é produzido.
Resumir
O modelo do construtor é usado principalmente para "construir um objeto complexo em etapas", onde "etapas" é um algoritmo estável, enquanto as várias partes de objetos complexos geralmente mudam. A vantagem é que o "processo de processamento" do modelo Builder está exposto, o que torna o modelo do construtor mais flexível, e o modelo do construtor dissocia o processo de montagem e cria componentes específicos, para que não precisemos nos importar com a forma como cada componente é montado.