A estratégia é um padrão comportamental do objeto no padrão de design.
O Stratrgy é amplamente utilizado. .
Aqui, tomamos substituição de string como exemplo. Pode haver várias maneiras de substituir as variáveis, dependendo dos requisitos do usuário, por isso precisamos preparar vários conjuntos de alternativas de caracteres variáveis.
Primeiro, criamos uma classe abstrata Reptemprule para definir algumas variáveis e métodos comuns:
A cópia do código é a seguinte:
classe abstrata pública ReptemPrule {
String protegida Oldstring = "";
public void SetoldString (String OldString) {
this.oldString = OldString;
}
string protegida newstring = "";
public String getNewString () {
Retornar Newstring;
}
Public Abstract Void Substituir () lança exceção;
}
Existe um método abstrato abstrato no Reptempruly que precisa ser herdado claramente, e essa substituição é na verdade um método específico que o substitui.
Agora temos duas alternativas de personagem:
1. Substitua AAA no texto por BBB;
2. Substitua AAA no texto pelo CCC.
As classes correspondentes são ReptemPruleOne e Reptempruletwo:
A cópia do código é a seguinte:
classe pública ReptemPruleOne estende o ReptemPrule {
public void reply () lança Exceção {
// Substituirfirst é um novo recurso do JDK1.4 NewsTring = OldString.replaceFirst ("AAA", "BBBB")
System.out.println ("Isso é substituir um");
}
}
A cópia do código é a seguinte:
classe pública REPTEMPRULETWO EXTENDE REPTEMPRULE {
public void reply () lança Exceção {
NewsTring = Oldstring.replaceFirst ("AAA", "CCC")
System.out.println ("Isso substitui dois");
}
}
Etapa 2: precisamos estabelecer uma classe de solução de algoritmo para fornecer ao cliente a capacidade de selecionar livremente algoritmos.
A cópia do código é a seguinte:
classe pública Reptemprulesolve {
Estratégia de Repto de Repto;
public Reptemprulesolve (regra de Reptemprule) {
this.strategy = regra;
}
public string getNewContext (site, string antiga) {
Return Strategy.Replace (site, OldString);
}
public void changeAlgorithm (Reptemprule Newalgorithm) {
Estratégia = NewalGorithm;
}
}
A chamada é a seguinte:
A cópia do código é a seguinte:
Teste de classe pública {
......
public void testreplace () {
// Use o primeiro conjunto de alternativas de reptemprulesolve solver = new Reptemprulesolve (new ReptempruSimple ());
solver.getNewContext (site, contexto);
// Use o segundo conjunto de solventes = new Reptemprulesolve (novo Reptempruletwo ());
solver.getNewContext (site, contexto);
}
.....
}
Atingimos o objetivo de alternar livremente os algoritmos durante a operação.
De fato, a parte principal de toda a estratégia é o uso de classes abstratas.
A estratégia e a fábrica são semelhantes. A fábrica se concentra na criação de objetos.
A estratégia é adequada para as seguintes ocasiões:
1. Salve o arquivo em diferentes formatos;
2. Compressa arquivos com algoritmos diferentes;
3. Interceptar imagens com diferentes algoritmos;
4. Os gráficos de saída dos mesmos dados em formatos diferentes, como curvas ou barras de diagrama de blocos.