23 tipos de patrones de diseño: el modo comando

Definición: Encapsular una petición como un objeto, por lo que se utiliza una solicitud diferente de los parámetros del cliente, la cola de peticiones o solicitudes de registro, y puede proporcionar una recuperación comando deshacer.

Tipo: patrones de comportamiento de clase

Diagrama de clases:

Estructura del modo de comando

        Como su nombre indica, es a modo de comando de comandos de paquetes, primer vistazo a la estructura básica del diagrama de clases de modo de comando:

  • clase de comando: es una clase abstracta, la clase del comando se ejecute para declarar, para anunciar un método general que se utiliza para ejecutar el comando.
  • ConcreteCommand clase: la clase de implementación clase Command, método abstracto declarado en la clase se dio cuenta.
  • clase de cliente: el cliente final llama a la clase.

        Estas tres categorías de acciones deben ser relativamente fácil de entender, vamos a hablar de la clase de invocador enfoque y la clase Recevier.

  • clase invocador: la persona que llama es responsable de llamar a comandos.
  • clase del receptor: el receptor se encarga de recibir órdenes y ejecutar el comando.

        El llamado paquete de mando, claramente, no es más que una serie de operaciones escribió un método, y luego por las llamadas de los clientes en la línea, reflejadas en el diagrama de clases, sólo una clase ConcreteCommand y la clase de cliente se puede completar con el comando paquete, aún más, con el fin de aumentar la flexibilidad, se puede añadir una clase abstracta de comandos apropiada, la persona que llama y el receptor al final es lo que?

        De hecho, se puede pensar en un ángulo diferente: Si simplemente encapsular algunas operaciones como un comando para llamar a otras personas, ¿cómo puede ser llamado un patrón? El modo de comando como un modo de comportamiento de clase, los primeros en hacerlo bajo acoplamiento, bajo acoplamiento con el fin de mejorar la flexibilidad, al tiempo que añade la persona que llama y el destinatario de los dos papeles propósito es precisamente para este propósito. el modo de comando de código común es el siguiente:

class Invoker {
	private Command command;
	public void setCommand(Command command) {
		this.command = command;
	}
	public void action(){
		this.command.execute();
	}
}
 
abstract class Command {
	public abstract void execute();
}
 
class ConcreteCommand extends Command {
	private Receiver receiver;
	public ConcreteCommand(Receiver receiver){
		this.receiver = receiver;
	}
	public void execute() {
		this.receiver.doSomething();
	}
}
 
class Receiver {
	public void doSomething(){
		System.out.println("接受者-业务逻辑处理");
	}
}
 
public class Client {
	public static void main(String[] args){
		Receiver receiver = new Receiver();
		Command command = new ConcreteCommand(receiver);
		//客户端直接执行具体命令方式(此方式与类图相符)
		command.execute();
 
		//客户端通过调用者来执行命令
		Invoker invoker = new Invoker();
		invoker.setCommand(command);
		invoker.action();
	}
}

Podemos ver a través del código, cuando llamamos, el momento de la ejecución de la primera clase es la persona que llama, entonces la clase de comandos, y, finalmente, la clase de receptor. Que la ejecución de un comando se divide en tres pasos, es mejor que todas las operaciones de acoplamiento están encapsulados en una clase que sea mucho menor, y esta es la esencia del modo de comando: el llamador del comando y los actores por separado, de modo que no les importa cómo opera la otra.

 

Ventajas y desventajas de modo de comando

        En primer lugar, un buen modo de comando encapsulación: cada comando están encapsulados, para el cliente, lo que cuenta con necesidad de ir a llamar al comando apropiado, sin saber específicamente cómo la ejecución del comando. Por ejemplo, hay un conjunto de operaciones de archivo de comando: crear un nuevo archivo, copiar archivos, borrar archivos. Si estas tres operaciones se encapsulan en una clase de comando, el cliente sólo necesita saber que hay tres clases de comandos para, como una lógica de comandos de clase encapsulada, no será necesario que el cliente saber.

        En segundo lugar, una buena escalabilidad, el modo de comando, en el modo de comando, el destinatario funcionamiento general de clase paquete básico, las clases de mando están encapsulados aún más por estas operaciones básicas, el tiempo cuando se añade un nuevo comando , para escribir una clase de comandos en general, no se parte de cero, hay un montón de clases a disposición del destinatario de la llamada, hay un montón de clases de comandos disponibles denominado buena reutilización de código. Por ejemplo, las operaciones de archivo, tenemos que añadir un archivo de comandos de corte, sólo tiene que copiar los archivos y los archivos de combinación de eliminación de ambos comandos en la línea, muy conveniente.

        Por último, hablar de deficiencias en el modo de comandos, es decir, si una gran cantidad de comandos, es necesario desarrollar un dolor de cabeza. En concreto simple comando, muchos, líneas de código para poner en práctica en algunas cosas, y luego usar el modo de comando, no controlan más de comandos simples, es necesario escribir una clase de comandos para encapsular.

 

modo de comando escena aplicable

       Durante la mayor parte de la solicitud - Función de modo de respuesta, más adecuado para el uso del modo de comando, como se define en modo de comando por ejemplo, el modo de registro de comandos en práctica, de deshacer la operación función más conveniente.

 

 resumen

       Para una ocasión en la final sin un patrón, este es un tema muy complicado para todos los desarrolladores. A veces, debido a la esperada ocurrirán en la demanda de flexibilidad y escalabilidad del sistema y el uso de algunos patrones de diseño algunos cambios, pero sucede que las necesidades previsibles, por el contrario, no previeron la need'd vienen muchos, dando como resultado un código modificado, el uso de patrones de diseño, pero jugó el efecto contrario, por lo que todo el equipo del proyecto en las protestas. Tales ejemplos, creo que todos los programadores han encontrado. Por lo tanto, basado en los principios del desarrollo ágil, estábamos diseñando el programa, de acuerdo a las necesidades actuales, sin necesidad de utilizar un patrón puede ser una buena solución, entonces no estamos para introducirlo, porque quiere introducir un patrón de diseño no es difícil podríamos tener otra mirada en el sistema cuando realmente se necesita para el uso, la introducción de este patrón de diseño.

       Tome el modo de comandos, por ejemplo, hemos desarrollado, la solicitud - función de modo de respuesta es muy común, en general, vamos a empaquetar la solicitud en respuesta a la operación de un método, este método puede ser llamado comando de encapsulación, pero no modo de comando. Al final nos queremos subir a esta altura patrón de diseño deben considerarse por separado, ya que, si se utiliza el modo de comando, es necesario introducir la persona que llama, ganador de dos papeles, colocados inicialmente en una lógica dispersa en tres clases , el diseño debe considerar este precio vale la pena.

Publicado 75 artículos originales · ganado elogios 48 · Vistas de 350.000 +

Supongo que te gusta

Origin blog.csdn.net/KingJin_CSDN_/article/details/89461052
Recomendado
Clasificación