La estrategia es un patrón de comportamiento del objeto en el patrón de diseño.
Stratrgy es ampliamente utilizado. .
Aquí tomamos la sustitución de cadenas como ejemplo. Puede haber varias formas de reemplazar las variables en él, dependiendo de los requisitos del usuario, por lo que necesitamos preparar varios conjuntos de alternativas de caracteres variables.
Primero, creamos una clase abstracta reptemprule para definir algunas variables y métodos comunes:
La copia del código es la siguiente:
Class de resumen pública REPTemprule {
cadena protegida OldString = "";
public void setOldString (String OldString) {
this.oldString = OldString;
}
string protegido newstring = "";
public String getNewString () {
Return Newstring;
}
Public Abstract void reemplazar () arroja excepción;
}
Existe un resumen de método abstracto en Reptemprule que necesita ser heredado claramente, y este reemplazo es en realidad un método específico que lo reemplaza.
Ahora tenemos dos alternativas de personajes:
1. Reemplace AAA en el texto con BBB;
2. Reemplace AAA en el texto con CCC.
Las clases correspondientes son reptempruleone y reptempruletwo:
La copia del código es la siguiente:
Public Class ReptempruleOne extiende REPTMPRULE {
public void reemplazar () lanza la excepción {
// Reemplazarfirst es una nueva característica de JDK1.4 Newstring = OldString.replaceFirst ("AAA", "BBBB")
System.out.println ("Esto es reemplazar uno");
}
}
La copia del código es la siguiente:
Public Class ReptempruletWo extiende Reptemprule {
public void reemplazar () lanza la excepción {
Newstring = OldString.replaceFirst ("AAA", "CCC")
System.out.println ("Esto es reemplazar dos");
}
}
Paso 2: Necesitamos establecer una clase de solución de algoritmo para proporcionar al cliente la capacidad de seleccionar libremente algoritmos.
La copia del código es la siguiente:
clase pública ReptempuleLve {
Estrategia de reptempulé privada;
public ReptempruleOlve (regla reptemprule) {
this.strategy = regla;
}
public String getNewContext (sitio de sitio, cadena OldString) {
Estrategia de retorno.Replace (Sitio, OldString);
}
public void changealgorithm (reptemprule newalgorithm) {
estrategia = newAlgorithm;
}
}
La llamada es la siguiente:
La copia del código es la siguiente:
Prueba de clase pública {
......
public void testReplace () {
// Use el primer conjunto de alternativas REPTMPRULEOLVE SOLVER = new Reptempruleolve (new ReptempruleImple ());
solver.getNewContext (sitio, contexto);
// use el segundo conjunto de solvers = new Reptempruleolve (new ReptempruletWo ());
solver.getNewContext (sitio, contexto);
}
.....
}
Hemos logrado el objetivo de cambiar libremente algoritmos durante la operación.
De hecho, la parte central de toda la estrategia es el uso de clases abstractas.
La estrategia y la fábrica son similares. Factory se centra en crear objetos.
La estrategia es adecuada para las siguientes ocasiones:
1. Guarde el archivo en diferentes formatos;
2. Comprimir archivos con diferentes algoritmos;
3. Interceptar imágenes con diferentes algoritmos;
4. Gráficos de salida de los mismos datos en diferentes formatos, como curvas o barras de diagrama de bloques.