introducir
En los sistemas de software, a veces enfrentamos la creación de "un objeto complejo", que generalmente se compone de subobjetos de cada parte utilizando ciertos algoritmos; Debido a los cambios en los requisitos, las diversas partes de este objeto complejo a menudo enfrentan cambios drásticos, pero el algoritmo que los combina es de hecho relativamente estable. ¿Cómo lidiar con este cambio? ¿Cómo proporcionar un "mecanismo de encapsulación" para aislar los cambios en "cada parte de objetos complejos" para evitar que el "algoritmo de construcción estable" en el sistema cambie con las necesidades? Esto es lo que se debe mencionar el modelo Builder.
El patrón del constructor puede separar la construcción de un objeto complejo de su representación, para que el mismo proceso de construcción pueda crear diferentes representaciones. Es decir, si usamos el modo Builder, el usuario debe especificar los tipos para construir para obtenerlos, y el proceso de construcción y los detalles específicos no necesitan ser conocidos.
texto
Este patrón es relativamente simple. Ingrese el código primero y luego explíquelo
La copia del código es la siguiente:
función getBeerById (id, devolución de llamada) {
// Use ID para solicitar datos y luego devolver los datos.
asyncrequest ('get', 'beer.uri? id =' + id, function (resp) {
// respuesta de llamadas de devolución de llamada
devolución de llamada (resp.esponsetext);
});
}
var el = document.Queryselector ('#test');
el.addeventListener ('hacer clic', getBeerByidbridge, falso);
función getBeerByidbridge (e) {
getBeerByid (this.id, function (cerveza) {
console.log ('cerveza solicitada:' + cerveza);
});
}
De acuerdo con la definición del constructor, la fase de tabla es una devolución de llamada, es decir, cómo mostrar y procesar los datos después de obtenerlo depende de la función de devolución de llamada. En consecuencia, la función de devolución de llamada no necesita prestar atención a cómo se obtienen los datos al procesar los datos. El mismo ejemplo también se puede ver en el método AJAX de jQuery. Hay muchas funciones de devolución de llamada (como éxito, devolución de llamada de error, etc.), y el objetivo principal es separar las responsabilidades.
También tengamos otro ejemplo de jQuery:
La copia del código es la siguiente:
$ ('<div class = "foo"> bar </div>');
Solo necesitamos pasar en los caracteres HTML para generar, sin tener en cuenta cómo se produce el objeto HTML específico.
Resumir
El modelo de constructor se usa principalmente para "construir un objeto complejo en los pasos", donde los "pasos" es un algoritmo estable, mientras que las diversas partes de los objetos complejos a menudo cambian. La ventaja es que el "proceso de procesamiento" del modelo de constructor está expuesto, lo que hace que el modelo de constructor sea más flexible, y el modelo de constructor decoupa el proceso de ensamblaje y crea componentes específicos, para que no tengamos que preocuparnos por cómo se ensambla cada componente.