Compartir tecnología

Explorar patrones de comando y sus aplicaciones

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

modo comando

modo comando es un patrón de diseño de comportamiento que convierte una solicitud en un objeto separado que contiene toda la información relacionada con la solicitud. Esta transformación le permite parametrizar métodos en función de diferentes solicitudes, retrasar o poner en cola solicitudes e implementar operaciones que se pueden deshacer.

Estructura del modo de comando

Insertar descripción de la imagen aquí

  1. remitente (Remitente), también conocida como "Invoker", la clase es responsable de inicializar la solicitud, que debe contener una variable miembro para almacenar una referencia al objeto de comando. El remitente activa el comando sin enviar una solicitud directamente al receptor. Tenga en cuenta que el remitente no es responsable de crear el objeto de comando: generalmente obtiene un comando pregenerado del cliente a través de un constructor.
  2. OrdenLa interfaz (comando) generalmente solo declara un método para ejecutar el comando.
  3. Órdenes específicas (Comandos concretos) implementará varios tipos de solicitudes. El comando específico en sí no completa el trabajo, pero delega la llamada a un objeto de lógica empresarial. Pero para simplificar el código, estas clases se pueden fusionar. Los parámetros necesarios para recibir el método de ejecución del objeto se pueden declarar como variables miembro de comandos específicos. Puede hacer que el objeto de comando sea inmutable y solo permitir la inicialización de estas variables miembro a través del constructor.
  4. receptor La clase (Receptor) contiene parte de la lógica empresarial. Casi cualquier objeto puede servir como receptor. La mayoría de los comandos solo se ocupan de los detalles de cómo pasar la solicitud al destinatario, y el destinatario hará el trabajo por sí mismo.
  5. cliente (Cliente) creará y configurará objetos de comando específicos. El cliente debe pasar todos los parámetros de la solicitud, incluida la entidad del destinatario, al constructor del comando. A partir de entonces, el comando generado se puede asociar con uno o más remitentes.

Código común para el modo de comando:

//抽象接收者
public abstract class Receiver{
	public abstract void operation();
}

//具体接收者
public class Recevier1 extends Recevier{
	public void operation(){
		...
	}
}

//通用命令接口
public interface Command{
	void execute();
}

//具体命令类
public class ConcreteCommand1 implements Command{
	private Receiver receiver;
	
	public ConcreteCommand1(Receiver _receiver){
		 this.receiver = _receiver;
	}
	
	public void execute(){
		this.receiver.operation();
	}
}

//调用者类
public class Invoker{
	private Command command;
	
	public void setCommand(Command _command){
		this.command = _command;
	}
	
	public void executeCommand(){
		this.command.execute();
	}
	
}

//主程序类
public class Client{
	public static void main(String[] args){
		//调用者
		Invoker invoker = new Invoker();
		//接收者
		Receiver receiver1 = new Receiver1();
		//定义一个命令
		Command command = new ConcreteCommand1(receiver1);
		
		invoker.setCommand(command);
		invoker.executeCommand();
	}
}