Este artículo describe la definición y el uso de los patrones de política de Java. Compártelo para su referencia, como sigue:
1. Definición:
Definir una serie de algoritmos, encapsularlos uno por uno y permitir que sean reemplazados entre sí.
2. Ventajas:
(1) El contexto y la estrategia específica están acopladas libremente, por lo que el contexto solo necesita saber qué instancia quiere usar para implementar la clase de interfaz de estrategia, pero no necesita saber qué clase es.
(2) El modelo de política cumple con el principio de apertura y cierre. Al agregar una nueva clase específica, no es necesario modificar el código de la clase de contexto. El contexto puede referirse a una instancia de la nueva política específica.
Iii. Ejemplo:
La siguiente es una explicación detallada del modelo de estrategia a través de una pregunta.
Requisitos experimentales:
Xiao Ding es un programador en Alibaba. Este día, el gerente del proyecto le dio una definición de clase
Trabajador de clase pública {int id; Nombre de cadena; int Age;}Xiao Ding vio que esta no era la definición de un trabajador, incluida la identificación del número, el nombre, la edad, etc.
El gerente dijo que necesito que escriba una función que pueda encontrar la más antigua entre un grupo de trabajadores. La declaración del método es (o algo como esto):
Worker SearchWorker (List <Worker> Workers);
List<Worker> workers de parámetros son los datos de este lote de trabajadores. Si se encuentra el trabajador más antiguo, el objeto del trabajador será devuelto. Si los trabajadores no tienen nodos, regrese nulo.
Respuesta:
1. Estrategia
En el modo de política, esta interfaz se nombra WorkStrategy (en preguntas específicas, este nombre se puede nombrar de acuerdo con preguntas específicas), y el código es el siguiente:
WorkStrategy.java
Import java.util.list; Strategy de interfaz pública {Agaavera de trabajadores públicos (List <Worker> List);}2. Contexto
La política orientada al contexto es una clase orientada a la interfaz; El código es el siguiente:
Maxage.java
import java.util.list; public class Maxage {WorkStrategy WorkStrategy; public void setworkStrategy (WorkStrategy WorkStrategy) {this.workStrategy = WorkStrategy; } Public Worker getFindmax (List <Sork> List) {if (WorkStrategy! = NULL) return WorkStrategy.AGEAVERAGE (LIST); else {return null; }}}3. Estrategias específicas
La estrategia específica es implementar la clase de interfaz de la tratea de trabajo, es decir, el trabajador abstracto en la interfaz debe reescribirse.
Método de agaavera (Lista <Trabajador> Lista)
El código es el siguiente:
StrategyMaxage.java
import java.util.list; Public Class StrategyMaxage implementa WorkStrategy {@Override Public Worker Agaaverage (List <Worker> List) {int fs [] = new int [list.size ()]; int maxage = 0; for (int j = 0; j <list.size (); j ++) {fs [j] = list.get (j) .getage (); if (fs [maxage] <= fs [j]) {maxage = j; }} return list.get (maxage); }}4. Uso del modo de política
Aplicación.java
import java.util.arrayList; import java.util.list; aplicación de clase pública {public static void main (string [] args) {list <sork> list = new ArrayList <> (); list.add (nuevo trabajador (1, "Zhang San", 30)); list.add (nuevo trabajador (2, "li si", 40)); list.add (nuevo trabajador (3, "Wang Wu", 33)); Maxage findage = new Maxage (); findage.setWorkStrategy (New StrategyMaxage ()); Trabajador findw = findage.getFindmax (lista); System.out.println ("Wulin.com Resultados de la prueba:"); System.out.println ("El trabajador más antiguo:"+findw.getid ()+""+findw.getName ()+""+findw.getage ()); }} Worker de clases {int id; Nombre de cadena; int Age; public int getId () {return id; } public void setid (int id) {this.id = id; } public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public int getAge () {return Age; } public void setAge (int Age) {this.age = edad; } trabajador público (int id, name de cadena, int age) {super (); this.id = id; this.name = name; this.age = edad; } Public Worker () {super (); // TODO STUB del constructor generado automático}}5. Resultados de la operación:
Para obtener más contenido relacionado con Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos de Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación Java DOM", "Resumen de los archivos Java y consejos de operación de directorio" y "Summary of Java Cache Operation Tips" ".
Espero que este artículo sea útil para la programación Java de todos.