introduzir
O método de modelo define o esqueleto de um algoritmo operacional e atrasa algumas etapas para uma subclasse. O método de modelo permite que a subclasse redefina certas etapas específicas do algoritmo sem alterar a estrutura do algoritmo.
Os métodos de modelo são uma técnica básica para a reutilização do código, o que é particularmente importante nas bibliotecas de classes porque extraem o comportamento público nas bibliotecas de classes. O método de modelo leva a uma estrutura de controle reverso, que é a lendária "Lei de Hollywood", isto é, "Não nos procure, procuraremos você", que se refere à classe pai que chama a operação de uma classe, e não o contrário. As manifestações concretas são classes abstratas (e métodos abstratos) em linguagens de programação orientadas a objetos, bem como subclasses que herdam a classe abstrata (e métodos abstratos).
texto
Por exemplo, fazer chá e café têm as mesmas etapas, como água fervente, fabricação de cerveja, despejando -o em uma xícara, adicionando pequenos ingredientes etc. No entanto, o método de fabricar cada bebida e os pequenos ingredientes adicionados são diferentes, para que possamos usar o método de modelo para alcançar essa etapa principal.
Primeiro, defina as etapas abstratas:
A cópia do código é a seguinte:
var caffeinebeverage = function () {
};
Caffeinebeverage.prototype.PreparereCipe = function () {
this.boilwater ();
this.Brew ();
this.pouroncup ();
if (this.customerwantscondiments ()) {
// Se você pode adicionar pequenos ingredientes, adicione
this.AddCondiments ();
}
};
Caffeinebeverage.prototype.boilwater = function () {
console.log ("Traga a água para ferver!");
};
Caffeinebeverage.prototype.pouroncup = function () {
console.log ("Coloque a bebida no copo!");
};
Caffeinebeverage.prototype.Brew = function () {
lançar um novo erro ("Este método deve ser reescrito!");
};
Caffeinebeverage.prototype.addcondents = function () {
lançar um novo erro ("Este método deve ser reescrito!");
};
// Adicione pequenos materiais por padrão
Caffeinebeverage.prototype.customerwantscondiments = function () {
retornar true;
};
Esta função estende todas as etapas básicas e etapas principais no protótipo. A fabricação e a adição de pequenos ingredientes não são implementados e são usados pela função correspondente à bebida específica para implementar. Além disso, a adição de pequenos ingredientes (CustomerwantsCondents) retorna true por padrão. Esse valor pode ser reescrito ao reescrever a subfunção.
As duas funções a seguir são as funções correspondentes para fabricar café e fabricar chá:
A cópia do código é a seguinte:
// Faça café
var café = function () {
CaffeineBeverAge.Apply (isto);
};
Café.prototype = new CaffeineBeverage ();
Coffee.prototype.Brew = function () {
console.log ("Eu quero despejar café da cafeteira!");
};
Coffee.prototype.addCondiments = function () {
console.log ("Adicione açúcar e leite");
};
Coffee.prototype.customerwantscondiments = function () {
Retornar confirmar ("Você quer adicionar açúcar e leite?");
};
// Faça folhas de chá
var chá = function () {
CaffeineBeverAge.Apply (isto);
};
Tea.prototype = new CaffeineBeverAge ();
Tea.prototype.Brew = function () {
Console.log ("puuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu -se
};
Tea.prototype.addcondents = function () {
console.log ("Adicione limão!");
};
Tea.prototype.customerwantscondiments = function () {
retornar confirmar ("Você quer adicionar limão?");
};
Além disso, o uso do Confirm permite que os usuários escolham adicionar pequenos ingredientes por si mesmos, o que é muito bom, não é?
Resumir
O método de modelo é aplicado às seguintes situações:
1. Implemente a parte imutável de um algoritmo ao mesmo tempo e deixe o comportamento mutável para subclasse para implementá -lo
2. O comportamento público em cada subclasse deve ser extraído e concentrado em uma classe de pais públicos para evitar a duplicação de código, e as diferenças são separadas em novas operações. Finalmente, substitua esses códigos diferentes por um método de modelo para pisar nessas novas operações.
3. Extensões de subclasse de controle. O método de modelo chama apenas a operação "gancho" em pontos específicos, para que permita extensões nesses pontos.
Diferentemente dos padrões de política, os métodos de modelo usam a herança para alterar parte do algoritmo, enquanto os padrões de política usam delegados para alterar todo o algoritmo.