Este artículo describe el principio y el uso del patrón de diseño de Java. Compártelo para su referencia, como sigue:
El patrón de política define una serie de algoritmos y encapsula cada algoritmo, haciéndolos reemplazables entre sí. El patrón de política permite que el algoritmo cambie de forma independiente de los clientes que lo usan. Entre ellos, la clase TreeSet y la clase Treemap en JDK utilizan el patrón de política. Estas dos clases son clases de recolección ordenadas, y las reglas de clasificación son equivalentes a una serie de algoritmos definidos en el patrón de políticas, y la clase de recolección es equivalente a una clase de entorno en el patrón de políticas para que los usuarios los usen. Solo sabiendo que TreeSet y Treemap están ordenados. En cuanto a cómo clasificar, está determinado por el algoritmo de clasificación.
El modelo de estrategia consta de tres partes: rol de política abstracta, papel de política específico y papel ambiental.
Rol de política abstracta : una clase de política, generalmente implementada por una interfaz o clase abstracta.
Rol de estrategia específica : se implementa la clase de estrategia abstracta y los algoritmos y los comportamientos relacionados están empaquetados.
Rol de entorno : posee una referencia a una clase de política y finalmente se llama al cliente.
Aquí hay un ejemplo de código de patrón de política simple:
1. Rol de estrategia abstracta : Defina una estrategia de interfaz.
paquete com.test;/** * Patrón de estrategia Rol de resumen * @author Zhouwen * */estrategia de interfaz pública {public int calculate (int a, int b);}2. Rol de estrategia específica : implementar la interfaz de estrategia. En el ejemplo, se implementa la operación de suma, resta, multiplicación y división.
paquete com.test;/*** Modo de política Clase de estrategia específica* Implementar operaciones de adición* @author zhouwen**/public class addStrategy implementa estrategia {@Override public int calculate (int a, int b) {return a + b; }} paquete com.test;/*** Modo de política Clase de estrategia específica* Implementar la operación de sustracción* @author zhouwen**/public class SintractRategy Implements Strategy {@Override public int calculación (int a, int b) {return a - b; }} paquete com.test;/** * Modo de política Clase de estrategia específica * Implementar operación de multiplicación * @author zhouwen * */public class MultiplyStragety implementa estrategia {@Override public int calculación (int a, int b) {return a * b; }} paquete com.test;/*** Modo de política Clase de estrategia específica* Implementar operación de división* @author zhouwen**/public class dividestragy implementa estrategia {@Override public int calculate (int a, int b) {return a/b; }}3.
paquete com.test;/** * Clase de entorno de modo de política * @Author Zhouwen * */Public Class Environment {Estrategia de estrategia privada; ambiente público (estrategia de estrategia) {this.strategy = estrategia; } // Use para cambiar la política public void setStrategy (estrategia de estrategia) {this.strategy = estrategia; } estrategia pública getTrategy () {Estrategia de retorno; } // Expone la interfaz informática para que el cliente llame a Public int Cálculo (int a, int b) {return Strategy.calCulate (a, b); }}4. Finalmente, escriba el código del cliente:
paquete com.test; public class Client {public static void main (String [] args) {addStrategy addStrategy = new AddStrategy (); Entorno ambiente = nuevo entorno (addStrategy); System.out.println (Environment.calcule (3, 4)); Sustrategy sustrategy = new SintractStrategy (); ambiente.setstrategy (sustrategy); System.out.println (Environment.calcule (3, 4)); Multiplystragety multiplystrategy = new MultiplyStragety (); ambiente.setstrategy (multiplystrategy); System.out.println (Environment.calcule (3, 4)); Dividestrategy dividestrategy = new Dividestrategy (); ambiente. Setstrategy (dividestratey); System.out.println (Environment.calcule (3, 4)); }}Resumir:
Con el System.out.println(environment.calculate(3, 4)); Este código, no sabemos a qué clase de implementación se llama. Solo al conocer la clase de política específica transmitida al rol de medio ambiente, sabemos a qué clase llamar. Esto puede lograr la separación del cliente y el algoritmo de política específico, lo que hace que el programa sea fácil de cambiar, comprender y expandirse.
Ventajas y desventajas del modelo de estrategia:
ventaja:
1. El propósito del patrón de política es encapsular cada algoritmo en una clase independiente con una interfaz común para un conjunto de algoritmos, para que puedan ser reemplazados entre sí. Como se proporciona en el ejemplo, la política se reemplaza por el método establecido.
2. El patrón de política permite que el algoritmo cambie sin afectar al cliente. Use patrones de políticas para separar el comportamiento del medio ambiente.
3. La clase de medio ambiente es responsable de mantener y consultar clases de comportamiento, y se proporcionan varios algoritmos en estrategias específicas. Dado que el algoritmo y el medio ambiente son independientes, la modificación del algoritmo no afectará el entorno y el cliente.
defecto:
1. El cliente debe conocer todas las clases de políticas y decidir qué clase de política usar a su propia discreción.
2. Causará muchas estrategias.
Para obtener más contenido relacionado con Java, los lectores interesados en este sitio pueden ver los temas: "Introducción y tutorial avanzado sobre la programación orientada a objetos de Java", "Tutorial sobre la estructura de datos de Java y el algoritmo", "Resumen de la operación de Java DOM Node Node", "Summary of Java File and Directory Operation Skilly" y "Summary of Java Cache Skitch" Habilidades "
Espero que este artículo sea útil para la programación Java de todos.