Los ejemplos en este artículo comparten con usted el modelo de estrategia Java para su referencia. El contenido específico es el siguiente
1. El patrón de estrategia es un modelo relativamente simple, también llamado patrón de política.
La definición es la siguiente:
Defina una familia de algoritmos, encapsula cada uno y hazlos intercambiables.
(Defina un conjunto de algoritmos, encapsula cada algoritmo y hazlos intercambiables).
El diagrama de clase general del patrón de política es el siguiente:
Tres roles del modelo de política:
● El papel de encapsulación de contexto, también conocido como papel de contexto, juega un papel de encapsulación que conecta el pasado y el futuro, bloquea el acceso directo de los módulos de alto nivel a las políticas y algoritmos, y encapsula posibles cambios.
● Estrategia Resumen Estrategia Rol de estrategia y algoritmo La abstracción familiar, generalmente una interfaz, define los métodos y atributos que cada estrategia o algoritmo debe tener,
● Estrategia concreta El rol de estrategia específico implementa operaciones en políticas abstractas, y esta clase contiene algoritmos específicos.
El patrón de política es aprobar una política específica en el constructor del rol encapsulado y luego ejecutar esta política.
El código fuente general del modo de política es el siguiente:
public class test3 {public static void main (string [] args) {// declara una estrategia de estrategia de estrategia específica = new ConcretestrateGy1 (); // Declarar el contexto de contexto contexto context = nuevo contexto (estrategia); // Ejecutar el método encapsulado context.DoAnyThinig (); }} Estrategia de interfaz {// reglas aritméticas del modo de política public void dosomething (); } class ConcretestrateGy1 Implementa la estrategia {public void dosomething () {System.out.println ("Reglas aritméticas para la estrategia específica 1"); }} Class ConcretestrateGy2 Implementa la estrategia {public void dosomething () {System.out.println ("Reglas aritméticas para la estrategia específica 2"); }} contexto de clase {// Estrategia abstracta Estrategia de estrategia privada; // El constructor establece estrategias específicas contexto público (estrategia _strategy) {this.strategy = _strategy; } // Método de estrategia encapsulada public void doanythinig () {this.strategy.dosomthething (); }}Ventajas del modelo de estrategia:
● El algoritmo se puede cambiar libremente
Esto se define por el modelo de política en sí. Mientras se implementa la estrategia abstracta, se convierte en miembro de la familia de políticas, encapsulándola a través de roles de encapsulación, asegurando que se proporcione una estrategia "libremente conmutable" al mundo exterior.
● Evite usar múltiples condiciones para juzgar
Si no hay un modelo de política, pensemos en cómo sería. Una familia estratégica tiene 5 algoritmos de estrategia. Debe usar la estrategia A en algún momento y luego usar la estrategia A en algún momento.
¿Cómo diseñar la estrategia B? ¿Usar múltiples declaraciones condicionales? Las declaraciones multi-condicionales no son fáciles de mantener, y la probabilidad de errores se mejora considerablemente. Después de usar el modo de política, otros módulos pueden decidir qué estrategia adoptar. La interfaz de acceso proporcionada por la familia de políticas al exterior es la clase de encapsulación, que simplifica las operaciones y evita el juicio de declaración condicional.
● Buena escalabilidad
Esto ni siquiera tiene que decir lo que tiene que hacer, porque es demasiado obvio. Es demasiado fácil agregar una estrategia al sistema existente. Simplemente implemente la interfaz y no hay necesidad de modificar nada más. Es similar a un complemento que se puede desmontar repetidamente, lo que se ajusta enormemente al principio de OCP.
Desventajas de los patrones de política:
● El número de clases de políticas aumenta. Cada estrategia es una clase, y la posibilidad de reutilización es muy pequeña, y el número de clases aumenta.
● Todas las clases de estrategia deben ser expuestas
Use escenarios para el modo de política:
● Múltiples clases tienen solo escenarios ligeramente diferentes en algoritmos o comportamientos.
● Escenarios en los que el algoritmo debe cambiarse libremente.
● Escenarios donde las reglas de algoritmo deben bloquearse.
2. Extensión del modo de política - Enumeración de políticas
La enumeración de la política se define de la siguiente manera:
● Es un enum.
● Es una enumeración de patrones de estrategia concentrados.
Los ejemplos son los siguientes:
Pregunta: Ingrese 3 parámetros y realice operaciones de adición y sustracción. Dos de los parámetros son tipo int, y el parámetro restante es el tipo de cadena. Solo se pueden seleccionar dos símbolos "+" y "-". No considere ninguna verificación compleja. Lo que estamos haciendo es una prueba de caja blanca, y lo que ingresamos es el tipo INT estándar y el tipo de cadena compatible.
importar java.util.arrays; public class test3 {public static void main (string [] args) {// Los dos parámetros ingresados son el número int a = integer.parseInt (args [0]); Símbolo de cadena = args [1]; // el símbolo int b = integer.parseInt (args [2]); System.out.println ("El parámetro de entrada es:"+arrays.tostring (args)); System.out.println ("El resultado en ejecución es:"+A+símbolo+b+"="+calculator.add.exec (a, b)); }} calculadora enum {// Agregar operación add ("+") {public int Exec (int a, int b) {return a+b; }}, // subtracción operación sub (" -") {public int exec (int a, int b) {return a - b; }}; Valor de cadena = ""; // Definir el tipo de valor del miembro calculadora privada (cadena _value) {this.value = _Value; } // Obtener el valor de los miembros de enumeración public String getValue () {return this.Value; } // declarar una función abstracta pública abstract int exec (int a, int b); }Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.