O significado de um padrão de estratégia é definir uma série de algoritmos, encapsulá -los um por um e torná -los substituíveis.
Um pequeno exemplo pode nos deixar claro rapidamente.
Recordando o método animado em jQuery.
A cópia do código é a seguinte:
$ (div) .animate ({"esquerda: 200px"}, 1000, 'linear'); // mova -se uniformemente
$ (div) .animate ({"esquerda: 200px"}, 1000, 'cubic'); // Tentação de energia cúbica
Esses dois códigos fazem do Div mover 200 pixels para a direita dentro de 1000ms. Linear (velocidade constante) e cúbica (flexibilização do clums) são pacotes de um modo de estratégia.
Vamos dar outro exemplo. Na primeira metade do ano, escrevi dev.qplus.com, muitas páginas terão um formulário de verificação instantânea. Cada membro do formulário terá algumas regras de verificação diferentes.
Por exemplo, na caixa de nomes, é necessário verificar as situações como palavras não vazias e sensíveis e caracteres excessivos. Obviamente, você pode escrever 3 se resolver o problema, mas a escalabilidade e a manutenção do código de escrita dessa maneira podem ser imaginadas. Se houver mais elementos na forma e mais situações de verificação, não é impossível escrever centenas de se mais no total.
Portanto, uma abordagem melhor é encapsular cada regra de verificação separadamente usando um padrão de política. Quando você precisa verificar qual tipo de verificação, você só precisa fornecer o nome desta política. Assim:
A cópia do código é a seguinte:
NameInput.addvalidata ({
NotNull: verdadeiro,
Dirtywords: verdadeiro,
Maxlength: 30
})
NotNull, MaxLength e outros métodos precisam retornar apenas verdadeiros ou falsos uniformemente para indicar se eles passaram a verificação.
Copie o código da seguinte forma: validatalist = {
notnull: function (value) {
Valor de retorno! == ”;
},
MaxLength: function (valor, maxlen) {
retorno value.length ()> maxlen;
}
}
Como pode ser visto, várias regras de verificação são facilmente modificadas e substituídas entre si. Se um dia o gerente de produto sugere que o limite para caracteres muito longo é alterado para 60 caracteres. Isso leva apenas 0,5 segundos para concluir o trabalho.