introduire
Dans les systèmes logiciels, nous sommes parfois confrontés à la création d'un "objet complexe", qui est généralement composé de sous-objets de chaque partie à l'aide de certains algorithmes; En raison de changements dans les exigences, les différentes parties de cet objet complexe sont souvent confrontées à des changements drastiques, mais l'algorithme qui les combine ensemble est en effet relativement stable. Comment gérer ce changement? Comment fournir un "mécanisme d'encapsulation" pour isoler les changements de "chaque partie des objets complexes" afin d'empêcher "l'algorithme de construction stable" dans le système de changer avec les besoins? C'est ce que le modèle du constructeur doit être mentionné.
Le motif du constructeur peut séparer la construction d'un objet complexe de sa représentation, afin que le même processus de construction puisse créer différentes représentations. C'est-à-dire que si nous utilisons le mode Builder, l'utilisateur doit spécifier les types à construire pour les obtenir, et le processus de construction et les détails spécifiques n'ont pas besoin d'être connus.
texte
Ce modèle est relativement simple. Veuillez d'abord saisir le code, puis l'expliquer
La copie de code est la suivante:
function getBeerByid (id, rappel) {
// Utilisez l'ID pour demander des données, puis renvoyez les données.
asyncrequest ('get', 'bier.uri? id =' + id, fonction (resp) {
// Response des appels de rappel
rappel (resp.ResponSeText);
});
}
var el = document.QuerySelector ('# test');
el.addeventListener ('click', getbeerbyidbridge, false);
fonction getbeerbyidbridge (e) {
getbeerbyid (this.id, fonction (bière) {
Console.log ('Bière demandée:' + bière);
});
}
Selon la définition du constructeur, la phase du tableau est un rappel, c'est-à-dire comment afficher et traiter les données après leur obtenir dépend de la fonction de rappel. De même, la fonction de rappel n'a pas besoin de faire attention à la façon dont les données sont obtenues lors du traitement des données. Le même exemple peut également être vu dans la méthode Ajax de jQuery. Il existe de nombreuses fonctions de rappel (telles que le succès, le rappel d'erreur, etc.), et l'objectif principal est de séparer les responsabilités.
Ayons également un autre exemple de jQuery:
La copie de code est la suivante:
$ ('<div class = "foo"> bar </div>');
Nous avons seulement besoin de passer dans les caractères HTML à générer, sans égard à la façon dont l'objet HTML spécifique est produit.
Résumer
Le modèle de générateur est principalement utilisé pour "construire un objet complexe dans les étapes", où "étapes" est un algorithme stable, tandis que les différentes parties des objets complexes changent souvent. L'avantage est que le «processus de traitement» du modèle de générateur est exposé, ce qui rend le modèle de générateur plus flexible, et le modèle de générateur découple le processus d'assemblage et crée des composants spécifiques, afin que nous n'ayons pas à nous soucier de la façon dont chaque composant est assemblé.