Compartilhamento de tecnologia

Explore padrões de comando e suas aplicações

2024-07-11

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

modo de comando

modo de comando é um padrão de design comportamental que converte uma solicitação em um objeto separado que contém todas as informações relacionadas à solicitação. Essa transformação permite parametrizar métodos com base em diferentes solicitações, atrasar ou enfileirar solicitações e implementar operações reversíveis.

Estrutura do modo de comando

Insira a descrição da imagem aqui

  1. remetente (Sender) - também conhecida como "Invoker" - classe é responsável por inicializar a solicitação, que deve conter uma variável membro para armazenar uma referência ao objeto de comando. O remetente aciona o comando sem enviar uma solicitação diretamente ao destinatário. Observe que o remetente não é responsável pela criação do objeto de comando: geralmente obtém um comando pré-gerado do cliente por meio de um construtor.
  2. OrdemA interface (Comando) geralmente declara apenas um método para executar o comando.
  3. Pedidos específicos (Concrete Commands) implementará vários tipos de solicitações. O comando específico em si não conclui o trabalho, mas delega a chamada a um objeto de lógica de negócios. Mas para simplificar o código, essas classes podem ser mescladas. Os parâmetros necessários para receber o método de execução do objeto podem ser declarados como variáveis-membro de comandos específicos. Você pode tornar o objeto de comando imutável e permitir apenas a inicialização dessas variáveis ​​de membro por meio do construtor.
  4. receptor A classe (receptor) contém parte da lógica de negócios. Quase qualquer objeto pode servir como receptor. A maioria dos comandos trata apenas dos detalhes de como passar a solicitação ao destinatário, e o destinatário fará o trabalho propriamente dito.
  5. cliente (Cliente) criará e configurará objetos de comando específicos. O cliente deve passar todos os parâmetros da solicitação, incluindo a entidade destinatária, para o construtor do comando. Depois disso, o comando gerado pode ser associado a um ou mais remetentes.

Código comum para 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();
	}
}